Problema:
Você deseja unir strings de duas colunas de uma tabela em uma.
Exemplo:
Nosso banco de dados tem uma tabela chamada
student
com dados nas seguintes colunas:id
, first_name
e last_name
. id | first_name | last_name |
---|---|---|
1 | Lora | Smith |
2 | Emil | Marrom |
3 | Alex | Jackson |
4 | Martin | Davis |
Vamos anexar o primeiro nome ao sobrenome do aluno em uma string. Use um espaço entre cada nome.
Solução:
SELECT first_name || ‘ ‘ || last_name AS full_name FROM student;
Esta consulta retorna registros em uma coluna chamada
full_name
:full_name |
---|
Lora Smith |
Emil Brown |
Alex Jackson |
Martin Davis |
Discussão:
Para anexar uma string a outra e retornar um resultado, use o || operador. Isso adiciona duas strings da esquerda e da direita e retorna um resultado. Se você usar o nome da coluna, não a coloque entre aspas. No entanto, ao usar um valor de string como um espaço ou texto, coloque-o entre aspas.
Em nosso exemplo, adicionamos um espaço a
first_name
e então a coluna last_name
. Esta nova coluna é chamada full_name
. Você também pode usar uma função especial:CONCAT. É preciso uma lista de strings ou nomes de colunas para unir como argumentos:
SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM student;
Os resultados são idênticos.
No entanto, a função CONCAT() é melhor para recuperar dados de uma coluna com valores NULL. Por quê? Porque, quando um NULL é incluído nos valores a serem unidos, o operador retorna NULL como resultado. No caso de CONCAT(), NULL não será exibido.
Veja o resultado do || operador se Emill não tiver um sobrenome registrado:
SELECT first_name || ‘ ‘ || last_name AS full_name FROM student;
full_name |
---|
Lora Smith |
NULO |
Alex Jackson |
Martin Davis |
Veja a função CONCAT para os mesmos dados:
SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM student;
full_name |
---|
Lora Smith |
Emil |
Alex Jackson |
Martin Davis |