Quando você trabalha com nomes, endereços, emails ou qualquer outro texto — quase sempre precisa fazer uma dessas coisas:
- Extrair parte da string
- Saber o tamanho
- Remover espaços desnecessários
- Encontrar/trocar um pedaço
- Formatar a saída
Por exemplo, você pode precisar:
- Mostrar só o sobrenome do nome completo.
- Achar estudantes cujo sobrenome começa com "P".
- Trocar todos os espaços por underline.
- Mostrar o sobrenome com a primeira letra maiúscula.
Tudo isso dá pra resolver fácil usando funções de string do PostgreSQL.
LENGTH() — tamanho da string
A função LENGTH() retorna a quantidade de caracteres na string.
Sintaxe:
LENGTH(string)
Exemplo:
SELECT name, LENGTH(name) AS name_length
FROM students;
| name | name_length |
|---|---|
| Art | 3 |
| Song | 4 |
| Pal | 3 |
Útil pra checar tamanho de nome completo, senhas e outros textos.
SUBSTRING() — extrair parte da string
Permite pegar uma substring — tipo, os 3 primeiros caracteres do sobrenome ou o domínio do email.
Sintaxe:
SUBSTRING(string FROM start FOR length)
start— posição do primeiro caractere (começa do 1)length— quantos caracteres pegar
Exemplo 1: os 3 primeiros caracteres do sobrenome
SELECT last_name, SUBSTRING(last_name FROM 1 FOR 3) AS prefix
FROM students;
| last_name | prefix |
|---|---|
| Song | Son |
| Pal | Pal |
Exemplo 2: domínio do email
SELECT email, SUBSTRING(email FROM POSITION('@' IN email) + 1) AS domain
FROM students;
| domain | |
|---|---|
| otto@example.com | example.com |
| maria@gmail.com | gmail.com |
TRIM() — remover espaços extras
Remove espaços (e outros caracteres) no começo e/ou no fim da string.
Sintaxe:
TRIM([LEADING | TRAILING | BOTH] chars FROM string)
Mas na real, quase sempre você usa assim:
TRIM(string)
Exemplo:
SELECT '[' || TRIM(' Art ') || ']' AS cleaned;
| cleaned |
|---|
| [Art] |
É importante principalmente quando o usuário digita dados manualmente (tipo, com espaço no começo).
POSITION() — buscar substring
Retorna a posição onde começa a substring.
Sintaxe:
POSITION(substring IN string)
Exemplo:
SELECT email, POSITION('@' IN email) AS at_position
FROM students;
| at_position | |
|---|---|
| otto@example.com | 5 |
| anna.pal@gmail.com | 9 |
Dá pra usar junto com SUBSTRING() pra extrair partes da string.
REPLACE() — trocar substring
Troca todas as ocorrências de uma substring por outra.
Sintaxe:
REPLACE(string, from_substring, to_substring)
Exemplo: trocar espaços por underline
SELECT name, REPLACE(name, ' ', '_') AS fixed_name
FROM students;
| name | fixed_name |
|---|---|
| Otto Art | Otto_Art |
| Maria Chi | Maria_Chi |
INITCAP() — primeira letra maiúscula
Transforma a string pra que a primeira letra de cada palavra fique maiúscula e o resto minúsculo.
Sintaxe:
INITCAP(string)
Exemplo:
SELECT INITCAP('anna pal') AS full_name;
| full_name |
|---|
| Anna Pal |
Bem útil pra padronizar nomes completos.
GO TO FULL VERSION