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 esNULL - 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_completo | |
|---|---|
| María García López | maria.garcia@email.com |
| Carlos Rodríguez Martín | carlos.rodriguez@email.com |
| Laura López Sánchez | laura.lopez@email.com |
| Pedro Fernández Castro | pedro.fernandez@email.com |
| Ana Martínez Ruiz | ana.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%';| nombre | precio |
|---|---|
| iPhone 15 Pro | 1299.99 |
| AirPods Pro | 249.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 MundoEs 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
