Problema:
Quiere unir cadenas de dos columnas de una tabla en una sola.
Ejemplo:
Nuestra base de datos tiene una tabla llamada student
con datos en las siguientes columnas:id
, first_name
y last_name
.
id | nombre | apellido |
---|---|---|
1 | Lora | Smith |
2 | Emil | Marrón |
3 | Álex | Jackson |
4 | Martín | Davis |
Agreguemos el nombre al apellido del estudiante en una cadena. Use un espacio entre cada nombre.
Solución:
SELECT first_name || ‘ ‘ || last_name AS full_name FROM student;
Esta consulta devuelve registros en una columna llamada full_name
:
nombre_completo |
---|
Lora Smith |
Emil Brown |
Alex Jackson |
Martín Davis |
Discusión:
Para agregar una cadena a otra y devolver un resultado, use el || operador. Esto suma dos cadenas de la izquierda y la derecha juntas y devuelve un resultado. Si usa el nombre de la columna, no lo encierre entre comillas. Sin embargo, al usar un valor de cadena como espacio o texto, escríbalo entre comillas.
En nuestro ejemplo, agregamos un espacio a first_name
y luego la columna last_name
. Esta nueva columna se llama full_name
.
También puede utilizar una función especial:CONCAT. Se necesita una lista de cadenas o nombres de columnas para unir como argumentos:
SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM student;
Los resultados son idénticos.
Sin embargo, la función CONCAT() es mejor para recuperar datos de una columna con valores NULL. ¿Por qué? Porque, cuando se incluye un NULL en los valores a unir, el operador devuelve NULL como resultado. En el caso de CONCAT(), no se mostrará NULL.
Mira el resultado de || operador si Emill no tiene un apellido registrado:
SELECT first_name || ‘ ‘ || last_name AS full_name FROM student;
nombre_completo |
---|
Lora Smith |
NULO |
Alex Jackson |
Martín Davis |
Mire la función CONCAT para los mismos datos:
SELECT CONCAT(first_name, ‘ ‘, last_name) AS full_name FROM student;
nombre_completo |
---|
Lora Smith |
Emil |
Alex Jackson |
Martín Davis |