CONCAT

La función CONCAT une dos o más cadenas en una sola. Es una de las funciones de cadena más utilizadas.

Sintaxis

CONCAT(cadena1, cadena2, ..., cadenaN)
  • Acepta uno o más argumentos
  • Si cualquier argumento es NULL, el resultado es NULL
  • Convierte automáticamente valores numéricos a cadena

Ejemplos básicos

SELECT CONCAT('Hola', ' ', 'mundo') AS saludo;
saludo
Hola mundo
SELECT CONCAT('MySQL', ' ', 8.0) AS version;
version
MySQL 8.0

Concatenar columnas

SELECT CONCAT(nombre, ' - $', precio) AS producto_precio
FROM productos
LIMIT 5;
producto_precio
iPhone 15 Pro - $1299.99
MacBook Air M2 - $1199.99
AirPods Pro - $249.99
iPad Air - $599.99
Apple Watch Series 9 - $399.99

Nombre completo de clientes

SELECT CONCAT(nombre, ' ', apellidos) AS nombre_completo, email
FROM clientes
LIMIT 5;
nombre_completoemail
María García Lópezmaria.garcia@email.com
Carlos Rodríguez Martíncarlos.rodriguez@email.com
Laura López Sánchezlaura.lopez@email.com
Pedro Fernández Castropedro.fernandez@email.com
Ana Martínez Ruizana.martinez@email.com

CONCAT con NULL

Si algún argumento es NULL, todo el resultado es NULL:

SELECT CONCAT('Hola', NULL, 'mundo') AS resultado;
resultado
NULL

Para evitar esto, usa IFNULL o COALESCE:

SELECT CONCAT('Stock: ', IFNULL(stock, 'Sin datos')) AS info
FROM productos
WHERE id = 1;
info
Stock: 50

Concatenar en WHERE

SELECT nombre, precio
FROM productos
WHERE CONCAT(nombre, ' ', precio) LIKE '%Pro%';
nombreprecio
iPhone 15 Pro1299.99
AirPods Pro249.99

Construir etiquetas HTML

SELECT CONCAT('<strong>', nombre, '</strong>') AS html
FROM categorias
LIMIT 3;
html
<strong>Electrónica</strong>
<strong>Accesorios electrónicos</strong>
<strong>Hogar inteligente</strong>

Concatenar con GROUP_CONCAT

GROUP_CONCAT es diferente: concatena valores de múltiples filas:

SELECT c.nombre AS categoria,
       GROUP_CONCAT(p.nombre SEPARATOR ', ') AS productos
FROM categorias c
JOIN productos p ON c.id = p.categoria_id
GROUP BY c.id
LIMIT 3;

CONCAT vs operador ||

En MySQL, el operador || es OR lógico por defecto. Para usarlo como concatenación, debes activar el modo PIPES_AS_CONCAT:

-- Por defecto, || es OR
SELECT 'Hola' || 'Mundo';
-- Resultado: 0 (OR lógico)
 
-- Para usarlo como concatenación
SET sql_mode = 'PIPES_AS_CONCAT';
SELECT 'Hola' || ' ' || 'Mundo';
-- Resultado: Hola Mundo

Es mejor usar siempre CONCAT para mayor claridad.

En el siguiente artículo veremos CONCAT_WS, que permite concatenar con un separador.

Escrito por Eduardo Lázaro