CodeGym /Cursos /SQL SELF /Formatação de strings: CONCAT(), UPPER(), LOWER()

Formatação de strings: CONCAT(), UPPER(), LOWER()

SQL SELF
Nível 5 , Lição 1
Disponível

Trabalhar com dados de texto é o pão de cada dia pra quem mexe com banco de dados. Imagina que tu é dev de uma loja online e tem um banco de usuários. Precisa mostrar os nomes completos dos usuários num banner de boas-vindas no site, tipo: "Bem-vindo, Otto Art!". Ou então precisa padronizar todos os emails (por exemplo, deixar tudo minúsculo). Nessas horas, não tem como fugir das operações com string.

O PostgreSQL tem ferramentas bem poderosas pra lidar com texto. Hoje a gente vai ver três das principais:

  • CONCAT() — junta strings.
  • UPPER() — transforma a string pra maiúsculo.
  • LOWER() — transforma a string pra minúsculo.

Trabalhando com a função CONCAT()

A função CONCAT() serve pra juntar várias strings numa só. É perfeita quando os dados estão em colunas diferentes, mas tu precisa mostrar tudo junto.

Sintaxe

CONCAT(string1, string2, ..., stringN)
  • string1, string2, stringN — as strings ou colunas que tu quer juntar.
  • Retorna uma string só, com todos os argumentos colados.

Exemplo: trabalhando com nomes

Vamos supor que temos a tabela students:

first_name last_name
Otto Art
Maria Chi
Anna Pal

Nosso objetivo: mostrar os nomes completos dos estudantes no formato "Nome Sobrenome".

Query:

SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM students;

Resultado:

full_name
Otto Art
Maria Chi
Anna Pal

Repara no ' ' entre o nome e o sobrenome. É o espaço que a gente colocou pra separar as strings.

Dicas de uso

CONCAT() ignora NULL. Se um dos argumentos for NULL, ele só pula. Se tu ainda não sabe o que é NULL, relaxa — a gente explica isso já já.

Alternativa ao CONCAT() é o operador ||, tipo assim:

SELECT first_name || ' ' || last_name AS full_name FROM students;

Mudando o case das strings: UPPER() e LOWER()

Pensa que tu tá lidando com emails que os usuários digitaram de tudo quanto é jeito: ivan@example.com, IVAN@EXAMPLE.COM. Pra padronizar, geralmente a gente precisa:

  • deixar tudo igual antes de comparar (tipo, lowercase).
  • destacar palavras importantes (tipo, UPPERCASE pra títulos).

UPPER(): texto em maiúsculo

A função UPPER() transforma o texto pra tudo maiúsculo.

Sintaxe:

UPPER(string)
  • string — a string ou o nome da coluna de texto.

Exemplo:

Na tabela students agora tem a coluna email:

first_name last_name email
Otto Art otto@example.com
Maria Chi MARIA@EXAMPLE.com
Anna Pal anna.pal@mail.ru

Queremos mostrar os emails em maiúsculo:

SELECT email, UPPER(email) AS email_upper
FROM students;

Resultado:

email email_upper
otto@example.com OTTO@EXAMPLE.COM
MARIA@EXAMPLE.com MARIA@EXAMPLE.COM
anna.pal@gmail.com ANNA.PAL@GMAIL.COM

LOWER(): texto em minúsculo

Do mesmo jeito, a função LOWER() transforma o texto pra minúsculo.

Sintaxe:

LOWER(string)

Exemplo:

Vamos deixar os emails todos em minúsculo:

SELECT email, LOWER(email) AS email_lower
FROM students;

Resultado:

email email_lower
otto@example.com otto@example.com
MARIA@EXAMPLE.com maria@example.com
anna.pal@gmail.com anna.pal@gmail.com

Exemplos práticos e casos de uso

Bora juntar tudo que a gente viu até agora.

Criando nome completo em maiúsculo

Query:

SELECT CONCAT(UPPER(first_name), ' ', UPPER(last_name)) AS full_name_upper
FROM students;

Resultado:

full_name_upper
OTTO ART
MARIA CHI
ANNA PAL

Aqui a gente usou CONCAT() pra juntar nome e sobrenome, e UPPER() pra deixar tudo maiúsculo.

Exemplo: padronizando emails

Queremos deixar todos os emails no mesmo formato — minúsculo:

UPDATE students
SET email = LOWER(email);

Agora todos os emails na tabela ficam iguais, não importa como estavam antes.

Como funciona o operador UPDATE tu vai ver nas próximas aulas.

Preparando uma saudação pros usuários

Vamos adicionar ao nome completo a saudação "Bem-vindo":

SELECT CONCAT('Bem-vindo, ', first_name, ' ', last_name, '!') AS greeting
FROM students;

Resultado:

greeting
Bem-vindo, Otto Art!
Bem-vindo, Maria Chi!
Bem-vindo, Anna Pal!

Erros comuns ao trabalhar com funções de texto

Se tu esquecer o espaço no CONCAT(), o resultado pode ficar estranho. Por exemplo:

SELECT CONCAT(first_name, last_name) AS full_name
FROM students;

O resultado vai ser: "OttoArt", "MariaChi". Sempre coloca o espaço onde precisa.

Usando NULL. Se um dos argumentos do CONCAT() for NULL, a string pode ficar incompleta. Por exemplo:

SELECT CONCAT(first_name, ' ', middle_name, ' ', last_name) AS full_name
FROM students;

Se middle_name = NULL, o resultado vai ser "Otto NULL Art". Pra evitar isso, usa a função COALESCE():

SELECT CONCAT(first_name, ' ', COALESCE(middle_name, ''), ' ', last_name) AS full_name
FROM students;

Mais sobre NULL e a função COALESCE() tu vai ver nas próximas aulas :P

Comentários
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION