CONCAT_WS (Transact-SQL)CONCAT_WS (Transact-SQL)

SE APLICA A: síSQL Server síAzure SQL Database síAzure Synapse Analytics (SQL DW) noAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Esta función devuelve una cadena resultante de la concatenación, o la combinación, de dos o más valores de cadena de una manera integral.This function returns a string resulting from the concatenation, or joining, of two or more string values in an end-to-end manner. Separa esos valores de cadena concatenados con el delimitador especificado en el primer argumento de función.It separates those concatenated string values with the delimiter specified in the first function argument. (CONCAT_WS indica concatenar con separador).(CONCAT_WS indicates concatenate with separator.)

SintaxisSyntax

CONCAT_WS ( separator, argument1, argument2 [, argumentN]... )

ArgumentosArguments

separadorseparator
Una expresión de cualquier tipo de carácter (char, nchar, nvarchar o varchar).An expression of any character type (char, nchar, nvarchar, or varchar).

argument1, argument2, argumentNargument1, argument2, argumentN
Una expresión de cualquier tipo.An expression of any type.

Tipos de valores devueltosReturn types

Un valor de cadena cuya longitud y tipo dependen de la entrada.A string value whose length and type depend on the input.

NotasRemarks

CONCAT_WS toma un número variable de argumentos de cadena y los concatena (o combina) en una sola cadena.CONCAT_WS takes a variable number of string arguments and concatenates (or joins) them into a single string. Separa esos valores de cadena concatenados con el delimitador especificado en el primer argumento de función.It separates those concatenated string values with the delimiter specified in the first function argument. CONCAT_WS requiere un argumento separador y un mínimo de otros dos argumentos de valor de cadena; de lo contrario, CONCAT_WS producirá un error.CONCAT_WS requires a separator argument and a minimum of two other string value arguments; otherwise, CONCAT_WS will raise an error. CONCAT_WS convierte implícitamente todos los argumentos en tipos de cadena antes de la concatenación.CONCAT_WS implicitly converts all arguments to string types before concatenation.

La conversión implícita de cadenas sigue las reglas existentes para las conversiones de tipos de datos.The implicit conversion to strings follows the existing rules for data type conversions. Para obtener más información sobre las conversiones de tipo de datos y comportamiento, consulte CONCAT (Transact-SQL).See CONCAT (Transact-SQL) for more information about behavior and data type conversions.

Tratamiento de valores NULLTreatment of NULL values

CONCAT_WS omite el valor SET CONCAT_NULL_YIELDS_NULL {ON|OFF}.CONCAT_WS ignores the SET CONCAT_NULL_YIELDS_NULL {ON|OFF} setting.

Si CONCAT_WS recibe argumentos en los que todos los valores son NULL, devolverá una cadena vacía de tipo varchar(1).If CONCAT_WS receives arguments with all NULL values, it will return an empty string of type varchar(1).

CONCAT_WS omite los valores NULL durante la concatenación y no se agrega el separador entre ellos.CONCAT_WS ignores null values during concatenation, and does not add the separator between null values. Por lo tanto, CONCAT_WS puede tratar limpiamente la concatenación de cadenas que podrían tener valores "en blanco"; por ejemplo, un segundo campo de dirección.Therefore, CONCAT_WS can cleanly handle concatenation of strings that might have "blank" values - for example, a second address field. Para obtener más información, vea el ejemplo B.See example B for more information.

Si un escenario implica valores nulos separados por un delimitador, considere la función ISNULL.If a scenario involves null values separated by a delimiter, consider the ISNULL function. Para obtener más información, vea el ejemplo C.See example C for more information.

EjemplosExamples

A.A. Concatenación de valores con separadorConcatenating values with separator

En este ejemplo se concatenan tres columnas de la tabla sys.databases separando los valores con -.This example concatenates three columns from the sys.databases table, separating the values with a -.

SELECT CONCAT_WS( ' - ', database_id, recovery_model_desc, containment_desc) AS DatabaseInfo
FROM sys.databases;

El conjunto de resultados es el siguiente:Here is the result set.

DatabaseInfoDatabaseInfo
1 - SIMPLE - NONE1 - SIMPLE - NONE
2 - SIMPLE - NONE2 - SIMPLE - NONE
3 - FULL - NONE3 - FULL - NONE
4 - SIMPLE - NONE4 - SIMPLE - NONE

B.B. Omitir valores NULLSkipping NULL values

En este ejemplo se ignoran valores NULL de la lista de argumentos.This example ignores NULL values in the arguments list.

SELECT CONCAT_WS(',','1 Microsoft Way', NULL, NULL, 'Redmond', 'WA', 98052) AS Address;

El conjunto de resultados es el siguiente:Here is the result set.

Address
------------   
1 Microsoft Way,Redmond,WA,98052

C.C. Generar el archivo CSV a partir de la tablaGenerating CSV file from table

En este ejemplo se utiliza una coma , como separador y se agrega el carácter de retorno de carro char(13) en el formato de valores separados de la columna del conjunto de resultados.This example uses a comma , as the separator value, and adds the carriage return character char(13) in the column separated values format of the result set.

SELECT 
STRING_AGG(CONCAT_WS( ',', database_id, recovery_model_desc, containment_desc), char(13)) AS DatabaseInfo
FROM sys.databases

El conjunto de resultados es el siguiente:Here is the result set.

DatabaseInfo
------------   
1,SIMPLE,NONE
2,SIMPLE,NONE
3,FULL,NONE 
4,SIMPLE,NONE 

CONCAT_WS pasará por alto los valores NULL en las columnas.CONCAT_WS ignores NULL values in the columns. Encapsule una columna con valores NULL con la función ISNULL y proporcione un valor predeterminado.Wrap a nullable column with the ISNULL function, and provide a default value. Para más información, vea este ejemplo:See this example for more:

SELECT 
STRING_AGG(CONCAT_WS( ',', database_id, ISNULL(recovery_model_desc,''), ISNULL(containment_desc,'N/A')), char(13)) AS DatabaseInfo
FROM sys.databases;

Vea tambiénSee also

CONCAT (Transact-SQL)CONCAT (Transact-SQL)
FORMATMESSAGE (Transact-SQL)FORMATMESSAGE (Transact-SQL)
QUOTENAME (Transact-SQL)QUOTENAME (Transact-SQL)
REPLACE (Transact-SQL)REPLACE (Transact-SQL)
REVERSE (Transact-SQL)REVERSE (Transact-SQL)
STRING_AGG (Transact-SQL)STRING_AGG (Transact-SQL)
STRING_ESCAPE (Transact-SQL)STRING_ESCAPE (Transact-SQL)
STUFF (Transact-SQL)STUFF (Transact-SQL)
TRANSLATE (Transact-SQL)TRANSLATE (Transact-SQL)
Funciones de cadena (Transact-SQL)String Functions (Transact-SQL)