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