CONCAT_WS
y para qué se usa?
CONCAT_WS
(que significa "Concatenate With Separator") es una función que permite combinar varios valores en una sola cadena, usando un delimitador entre ellos. A diferencia de CONCAT
, esta función incluye un delimitador entre cada valor y omite aquellos que son NULL
, evitando la necesidad de usar verificaciones adicionales en la consulta. Esta característica facilita la creación de cadenas concatenadas de manera más eficiente y legible.
Los usos típicos de CONCAT_WS
incluyen:
;
, ,
, etc.) para su visualización.
CONCAT_WS
CONCAT_WS ( separator, string1, string2, ... )
separator
: El delimitador que se utilizará entre los valores concatenados (por ejemplo, una coma ,
, un guion -
, o un espacio).
string1, string2, ...
: Las cadenas de texto o columnas que se desean concatenar. Se pueden incluir tantos valores como sea necesario.
CONCAT_WS
Supongamos que tienes una tabla Empleados
con las columnas Nombre
, Apellido
y Departamento
. Para combinar estas columnas en una sola cadena con comas como delimitador:
SELECT CONCAT_WS(', ', Nombre, Apellido, Departamento) AS EmpleadoInfo
FROM Empleados;
Resultado:
EmpleadoInfo
----------------------
Ana, García, Ventas
Juan, Pérez, Soporte
María, Rodríguez, Desarrollo
Cada columna se une con una coma y un espacio (', '
) entre ellas.
NULL
Si algunos valores de las columnas son NULL
, CONCAT_WS
los ignora automáticamente. Por ejemplo:
SELECT CONCAT_WS('-', Nombre, Apellido, Departamento) AS EmpleadoInfo
FROM Empleados;
Resultado:
EmpleadoInfo
----------------------
Ana-García-Ventas
Juan-Pérez-NULL
María-Rodríguez-Desarrollo
En la fila donde Departamento
es NULL
, CONCAT_WS
omite el valor y evita crear guiones adicionales (Juan-Pérez
en lugar de Juan-Pérez-
).
Para combinar varias columnas en una sola lista con punto y coma (;
) como delimitador:
SELECT CONCAT_WS('; ', Telefono, Correo, Direccion) AS Contacto
FROM Empleados;
Resultado:
Contacto
-------------------------------
123456789; ana@mail.com; Madrid
NULL; juan@mail.com; Barcelona
678543210; NULL; Sevilla
Las columnas que son NULL
se omiten, creando listas más limpias.
CONCAT_WS
con expresiones
Puedes usar CONCAT_WS
con expresiones o funciones para generar cadenas más complejas:
SELECT CONCAT_WS(' | ', 'Empleado:', Nombre + ' ' + Apellido, 'ID:', EmpleadoID) AS DetalleEmpleado
FROM Empleados;
Resultado:
DetalleEmpleado
-------------------------------
Empleado: Ana García | ID: 1
Empleado: Juan Pérez | ID: 2
Empleado: María Rodríguez | ID: 3
Aquí se combinan textos fijos (Empleado:
y ID:
) con los valores de las columnas Nombre
, Apellido
y EmpleadoID
.
Si tienes una tabla Productos
con las columnas Nombre
, Cantidad
y Precio
, puedes crear una descripción de productos de la siguiente manera:
SELECT CONCAT_WS(' ', Nombre, 'Cantidad:', CAST(Cantidad AS VARCHAR), 'Precio:', CAST(Precio AS VARCHAR)) AS DescripcionProducto
FROM Productos;
Resultado:
DescripcionProducto
-------------------------------------
ProductoA Cantidad: 10 Precio: 150
ProductoB Cantidad: 5 Precio: 300
ProductoC Cantidad: 20 Precio: 100
Este ejemplo usa CONCAT_WS
para crear cadenas descriptivas con etiquetas y valores numéricos.
CONCAT_WS
ignora automáticamente los valores NULL
y no requiere comprobaciones adicionales, a diferencia de CONCAT
.
separator
) se aplica a cada par de elementos, por lo que no se agrega ni al principio ni al final de la cadena resultante.
Para más información sobre CONCAT_WS
, consulta la documentación oficial de Microsoft.
Jorge García
Fullstack developer