Funciones de texto · guía práctica

CONCAT

Une varios valores en una columna calculada. La sintaxis y el tratamiento de NULL cambian entre motores, por lo que conviene escribir la intención de forma explícita.

Lectura: 6–8 minEjemplo comprobadoPráctica con pistas
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

Operador SQL usado en SQLite y PostgreSQL
texto1 || texto2 || texto3
Función disponible en varios motores
CONCAT(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:

SQLite
SELECT id,
       nombre || ' · ' || ciudad AS ficha
FROM clientes
ORDER BY id
LIMIT 5;
Fichas construidas por la consulta
idficha
1Ana Torres · Madrid
2Luis Martín · Valencia
3Marta Ruiz · Madrid
4Diego López · Bilbao
5Sara Gómez · Sevilla

Cómo funciona

  1. La primera unión toma el nombre y añade el separador · .
  2. La segunda añade la ciudad.
  3. El alias ficha nombra la columna calculada.
  4. 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:

SQLite
SELECT id, nombre || ' · ' || email AS contacto
FROM clientes
WHERE id IN (1, 4)
ORDER BY id;
Un correo ausente convierte la expresión en NULL
idcontacto
1Ana Torres · ana@example.test
4NULL

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

Resultado difícil de leer
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

Básica · apoyo gradual

Crea una etiqueta de producto

Muestra una columna etiqueta con el formato nombre — categoria. Ordena por id.

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 NULL cambia según la función y el motor.
  • COALESCE permite definir una alternativa cuando es correcto hacerlo.

Conceptos relacionados

Fuentes técnicas consultadas

Se utilizaron para comprobar sintaxis y tratamiento de valores nulos.