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 substringsub
na strings
.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 substringsub
é encontrada, ou0
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.