Contenido de esta guía
Qué significa concatenar
Concatenar es unir varios fragmentos de texto en un solo valor. Puedes construir una etiqueta, un nombre completo o una frase para presentar datos. El resultado se calcula en la consulta y no modifica las columnas originales.
La sintaxis cambia: PostgreSQL y SQLite admiten el operador ||; PostgreSQL, MySQL y las versiones modernas de SQLite también ofrecen CONCAT. SQL Server utiliza habitualmente CONCAT o el operador +, con diferencias importantes frente a NULL.
Sintaxis básica
texto1 || texto2 || texto3CONCAT(texto1, texto2, texto3)Incluye tú mismo los espacios y separadores. Unir nombre y ciudad sin un separador produciría valores como Ana TorresMadrid.
Ejemplo guiado
Queremos crear una ficha breve con nombre y ciudad:
SELECT id,
nombre || ' · ' || ciudad AS ficha
FROM clientes
ORDER BY id
LIMIT 5;| id | ficha |
|---|---|
| 1 | Ana Torres · Madrid |
| 2 | Luis Martín · Valencia |
| 3 | Marta Ruiz · Madrid |
| 4 | Diego López · Bilbao |
| 5 | Sara Gómez · Sevilla |
Cómo funciona
- La primera unión toma el nombre y añade el separador
·. - La segunda añade la ciudad.
- El alias
fichanombra la columna calculada. - Los valores originales permanecen en sus columnas.
Qué ocurre con NULL
El comportamiento no es idéntico entre motores y expresiones. Con el operador || de SQLite, si uno de los fragmentos es NULL, toda la expresión es NULL:
SELECT id, nombre || ' · ' || email AS contacto
FROM clientes
WHERE id IN (1, 4)
ORDER BY id;| id | contacto |
|---|---|
| 1 | Ana Torres · ana@example.test |
| 4 | NULL |
Cuando quieres un valor alternativo, puedes utilizar COALESCE(email, 'sin correo'). No lo añadas automáticamente: decide si sustituir el dato ausente representa correctamente la información.
Error frecuente
Olvidar el separador o el tratamiento de NULL
SELECT nombre || ciudad FROM clientes;La consulta es válida, pero el resultado no separa las partes. Además, una parte nula puede anular toda la expresión según la sintaxis y el motor.
Comprueba lo aprendido
Crea una etiqueta de producto
Muestra una columna etiqueta con el formato nombre — categoria. Ordena por id.
Solución razonada
SELECT nombre || ' — ' || categoria AS etiqueta
FROM productos
ORDER BY id;El alias describe el nuevo valor. La expresión solo afecta al resultado.
Compatibilidad y elección
CONCAT, CONCAT_WS y los operadores no tratan NULL exactamente igual en todos los motores. MySQL devuelve NULL con CONCAT si cualquier argumento es nulo, mientras CONCAT_WS omite argumentos nulos después del separador. PostgreSQL concat ignora argumentos nulos. Comprueba el motor y escribe una decisión explícita.
Qué debes recordar
- Concatenar une valores dentro del resultado.
- Debes añadir espacios o separadores.
- El comportamiento de
NULLcambia según la función y el motor. COALESCEpermite definir una alternativa cuando es correcto hacerlo.
Conceptos relacionados
Fuentes técnicas consultadas
Se utilizaron para comprobar sintaxis y tratamiento de valores nulos.