
En este tutorial, aprenderá a usar la función CONCAT_WS()
de SQL Server para unir varias cadenas junto con un separador, esta función solo esta disponible en SQL Server 2017 en adelante.
Descripción general de la función CONCAT_WS() de SQL Server
La función CONCAT_WS()
de SQL Server concatena dos o más cadenas en una cadena con un separador. CONCAT_WS(
) significa concatenar con separador.
A continuación, se muestra la sintaxis de la función CONCAT_WS()
:
CONCAT_WS(separator,input_string1,input_string2,[...input_stringN]);
En esta sintaxis podemos ver lo siguiente:
- separator es una expresión basada en caracteres que evalúa cualquier carácter del tipo
CHAR
,NCHAR
, VARCHAR oNVARCHAR
. - input_string1 a input_stringN son expresiones de cualquier tipo. La función
CONCAT_WS()
convierte implícitamente valores de tipo sin carácter a tipo de carácter antes de la concatenación.
La función CONCAT_WS()
une las cadenas de entrada en una sola cadena. Separa esas cadenas concatenadas con el separador especificado en el primer argumento.
Tenga en cuenta que CONCAT_WS()
requiere al menos dos cadenas de entrada. Significa que, si pasa cero o un argumento de cadena de entrada, la función generará un error.
La función CONCAT_WS()
los valores NULL
los toma como una cadena vacía de tipo VARCHAR(1)
. Tampoco agrega el separador entre NULL
. Por lo tanto, la función CONCAT_WS()
puede unir cadenas que pueden tener valores en blanco.
SQL Server CONCAT_WS() ejemplos de funciones
Veamos algunos ejemplos del uso de la función CONCAT_WS()
.
A) Usar CONCAT_WS() para unir cadenas literales con un separador
El siguiente ejemplo utiliza la función CONCAT_WS()
para unir dos cadenas literales en una. Separa dos valores concatenados usando un espacio:
SELECT
CONCAT_WS(' ', 'Estrada', 'Web') full_name
Resultado:
full_name
---------
Estrada Web
(1 row affected)
B) Usando CONCAT_WS() con columnas de tabla
La siguiente instrucción usa la función CONCAT_WS()
para unir valores en las columnas last_name y first_name de la tabla sales.customers de la base de datos de ejemplo. Separa el apellido y el nombre por una coma(,) y espacio:
SELECT
first_name,
last_name,
CONCAT_WS(', ', last_name, first_name) full_name
FROM
sales.customers
ORDER BY
first_name,
last_name;
La siguiente imagen muestra el resultado parcial:
C) Usando CONCAT_WS() con NULL
La siguiente declaración demuestra cómo la función CONCAT_WS)
maneja las cadenas de entrada que tienen valores NULL
:
SELECT
CONCAT_WS(',', 1, 2, NULL, NULL, 3);
Resultado:
result
----------------------------------------
1,2,3
(1 row affected)
Como se puede ver claramente en la salida, la función CONCAT_WS()
ignora los NULL
y no agrega el separador entre los valores NULL
.
El siguiente ejemplo concatena los datos del cliente para formatear las direcciones del cliente. Si un cliente no tiene un número de teléfono, la función simplemente lo ignora:
SELECT
CONCAT_WS
(
CHAR(13),
CONCAT(first_name, ' ', last_name),
phone,
CONCAT(city, ' ', state),
zip_code,
'---'
) customer_address
FROM
sales.customers
ORDER BY
first_name,
last_name;
La siguiente imagen ilustra la salida parcial:
Tenga en cuenta que debe cambiar el resultado de la consulta de la cuadrícula a texto para ver el resultado en el formato anterior:
D) Usar CONCAT_WS() para generar un archivo CSV
Esta declaración utiliza una coma (,) como separador y concatena valores en first_name, last_name y la columna de correo electrónico para generar un archivo CSV:
SELECT
CONCAT_WS(',', first_name, last_name, email)
FROM
sales.customers
ORDER BY
first_name,
last_name;
Resultado:
En este tutorial, ha aprendido cómo usar la función CONCAT_WS()
de SQL Server para concatenar cadenas con un separador, recuerde que esta función solo está disponible en SQL Server 2017 o superior.