CONCAT_WS
CONCAT_WS significa Concat With Separator. Concatena cadenas usando un separador definido y, a diferencia de CONCAT, ignora los valores NULL.
Sintaxis
CONCAT_WS(separador, cadena1, cadena2, ..., cadenaN)- El primer argumento es el separador
- Si el separador es
NULL, el resultado esNULL - Los argumentos
NULLse ignoran (no generan resultadoNULL)
Ejemplo básico
SELECT CONCAT_WS(', ', 'Manzana', 'Naranja', 'Plátano') AS frutas;| frutas |
|---|
| Manzana, Naranja, Plátano |
SELECT CONCAT_WS(' - ', 'MySQL', 'Tutorial', 'Español') AS titulo;| titulo |
|---|
| MySQL - Tutorial - Español |
CONCAT_WS ignora NULL
Esta es la ventaja principal sobre CONCAT:
-- CONCAT: NULL contamina todo el resultado
SELECT CONCAT('A', NULL, 'B') AS con_concat;| con_concat |
|---|
| NULL |
-- CONCAT_WS: ignora los NULL
SELECT CONCAT_WS(', ', 'A', NULL, 'B') AS con_concat_ws;| con_concat_ws |
|---|
| A, B |
Datos de clientes
SELECT CONCAT_WS(' ', nombre, apellidos) AS nombre_completo
FROM clientes
LIMIT 5;| nombre_completo |
|---|
| María García López |
| Carlos Rodríguez Martín |
| Laura López Sánchez |
| Pedro Fernández Castro |
| Ana Martínez Ruiz |
Construir direcciones
SELECT CONCAT_WS(', ', nombre, email, telefono) AS contacto
FROM clientes
LIMIT 3;| contacto |
|---|
| María, maria.garcia@email.com, 612345678 |
| Carlos, carlos.rodriguez@email.com, 623456789 |
| Laura, laura.lopez@email.com, 634567890 |
Separadores comunes
SELECT
CONCAT_WS(' | ', nombre, precio, stock) AS con_pipe,
CONCAT_WS(' / ', nombre, precio) AS con_slash,
CONCAT_WS(' → ', nombre, precio) AS con_flecha
FROM productos
WHERE id = 1;| con_pipe | con_slash | con_flecha |
|---|---|---|
| iPhone 15 Pro | 1299.99 | 50 | iPhone 15 Pro / 1299.99 | iPhone 15 Pro → 1299.99 |
Generar CSV
SELECT CONCAT_WS(',', id, nombre, precio, stock) AS linea_csv
FROM productos
LIMIT 3;| linea_csv |
|---|
| 1,iPhone 15 Pro,1299.99,50 |
| 2,MacBook Air M2,1199.99,30 |
| 3,AirPods Pro,249.99,100 |
CONCAT_WS vs CONCAT
| Característica | CONCAT | CONCAT_WS |
|---|---|---|
| Separador | Manual (incluir como argumento) | Primer argumento |
| Comportamiento con NULL | Devuelve NULL | Ignora el NULL |
| Uso ideal | Concatenación simple | Listas con separador |
En el siguiente artículo veremos LENGTH para obtener la longitud de una cadena.
Escrito por Eduardo Lázaro
