2.10. Tipos Textuais

Os tipos character, character varying e text são capazes de representar uma sequência de caracteres, ou cadeia de caracteres, ou string.

Uma string pode ser expressa entre aspas simples ou entre marcações especiais como um duplo sinal de dólar:

SELECT 'Bancos de Dados Geográficos';

ou:

SELECT $$Bancos de Dados Geográficos$$;

Para escrever literais string que expandem por múltiplas linhas, podemos fazer:

SELECT 'Bancos de Dados'
' Geográficos';

Para representar o caracter ' (aspas simples), devemos dobrar o número de caracteres, como mostrado abaixo:

SELECT '''Bancos de Dados Geográficos''';

2.10.1. Operações com Strings

2.10.1.1. Concatenação de Strings: \(s || t\)

O operador || para strings realiza a concatenação de duas strings:

SELECT 'Bancos' || 'Dados';
SELECT 'Bancos ' || 'Dados';
SELECT 'Bancos ' || 'de Dados ' || 'Geográficos';

Se um dos valores envolvidos não for um dos tipos string, o PostgreSQL realiza a conversão do valor para uma string:

SELECT 'Bancos ' || 'de Dados ' || 'Geográficos ' || 2022;

2.10.1.2. Comprimento da cadeia: length(s)

O operador length(s) retorna o número de caracteres (ou tamanho) da string \(s\).

Exemplos:

SELECT length('Bancos de Dados Geográficos');
SELECT length('');

2.10.1.3. Conversão para Letras Minúsculas ou Maiúsculas

A função lower(s) retorna uma cópia da string com todos os caracteres em minúsculo:

SELECT lower('Bancos de Dados Geográficos');

A função upper(s) retorna uma cópia da string com todos os caracteres em maiúsculo:

SELECT upper('Bancos de Dados Geográficos');

2.10.1.4. Posição de Ocorrência de uma Substring

Sintaxe:

position(sub IN s)
  • Descrição: A função position procura a ocorrência da substring sub na string s.

  • Parâmetros:

    • sub: Substring cuja ocorrência deseja-se ser localizada.

    • s: String a ser avaliada.

  • Retorno: Esse método retorna a posição do primeiro caractere na string s onde a ocorrência da substring sub é encontrada, ou 0 caso não seja encontrada.

Exemplos:

SELECT position('co' IN 'Bancos de Dados Geográficos');
SELECT position('gra' IN 'A grade de aulas');
SELECT position('gra' IN 'Landsat');

2.10.1.5. Extração de Substring

Sintaxe:

substring ( string text [ FROM start integer ] [ FOR count integer ] ) → text

Exemplos:

SELECT substring('Bancos de Dados Geográficos' FROM 1 FOR 6);

2.10.2. Exercícios

Os exercícios desta seção consideram as tabelas criadas na Seção 2.7 - Tipos Numéricos.

Exercício 1. Faça uma consulta na tabela populacao_1940 que converta o nome das Unidades da Federação para letras maiúsculas.

Solução:
SELECT upper(uf) AS uf
  FROM populacao_1940;

Saída:

    uf
-----------
 RONDÔNIA
 ACRE
 AMAZONAS
 RORAIMA
 PARÁ
 AMAPÁ
 TOCANTINS
 MARANHÃO
 PIAUÍ
(9 rows)

Exercício 2. Liste as Unidades da Federação da tabela populacao_1940 que começam pela letra A.

Solução:

Usando a função left:

SELECT uf
  FROM populacao_1940
 WHERE left(uf, 1) = 'A';

Saída:

    uf
----------
 Acre
 Amazonas
 Amapá
(3 rows)

Usando o operador LIKE:

SELECT uf
  FROM populacao_1940
 WHERE uf LIKE 'A%';

Saída:

    uf
----------
 Acre
 Amazonas
 Amapá
(3 rows)

Exercício 3. Faça uma consulta na tabela populacao_1940 que apresente a seguinte listagem:

Estado

homens > mulheres

Nome: ACRE - Brasil

t

Nome: AMAPÁ - Brasil

t

Nome: AMAZONAS - Brasil

t

Nome: MARANHÃO - Brasil

f

Nome: PARÁ - Brasil

t

Nome: PIAUÍ - Brasil

f

Nome: RONDÔNIA - Brasil

t

Nome: RORAIMA - Brasil

t

Nome: TOCANTINS - Brasil

t

Solução:
   SELECT 'Nome: ' || upper(uf) || ' - Brasil' AS "Estado", homens > mulheres AS "homens > mulheres"
    FROM populacao_1940
ORDER BY "Estado";

Saída:

          Estado          | homens > mulheres
--------------------------+-------------------
 Nome: ACRE - Brasil      | t
 Nome: AMAPÁ - Brasil     | t
 Nome: AMAZONAS - Brasil  | t
 Nome: MARANHÃO - Brasil  | f
 Nome: PARÁ - Brasil      | t
 Nome: PIAUÍ - Brasil     | f
 Nome: RONDÔNIA - Brasil  | t
 Nome: RORAIMA - Brasil   | t
 Nome: TOCANTINS - Brasil | t
(9 rows)

Dica

Para uma lista completa das funções e operações com strings, consulte o manual do PostgreSQL na Seção 9.4. String Functions and Operators.