CONCAT (Transact-SQL)CONCAT (Transact-SQL)

SE APLICA A: síSQL Server síAzure SQL Database síAzure Synapse Analytics (SQL DW) síAlmacenamiento de datos paralelos APPLIES TO: yesSQL Server yesAzure SQL Database yesAzure Synapse Analytics (SQL DW) yesParallel 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. (Para agregar un valor de separación durante la concatenación, vea CONCAT_WS).(To add a separating value during concatenation, see CONCAT_WS.)

Icono de vínculo de tema Convenciones de sintaxis de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxisSyntax

CONCAT ( string_value1, string_value2 [, string_valueN ] )  

ArgumentosArguments

string_valuestring_value
Valor de cadena que se va a concatenar con los demás valores.A string value to concatenate to the other values. La función CONCAT requiere al menos dos argumentos valor_cadena y no más de 254 argumentos valor_cadena.The CONCAT function requires at least two string_value arguments, and no more than 254 string_value arguments.

Tipos de valores devueltosReturn types

string_valuestring_value
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 toma un número variable de argumentos de cadena y los concatena (o combina) en una sola cadena.CONCAT takes a variable number of string arguments and concatenates (or joins) them into a single string. Necesita un mínimo de dos valores de entrada; de lo contrario, se produce un error en CONCAT.It requires a minimum of two input values; otherwise, CONCAT will raise an error. CONCAT convierte implícitamente todos los argumentos en tipos de cadena antes de la concatenación.CONCAT implicitly converts all arguments to string types before concatenation. CONCAT convierte implícitamente los valores NULL en cadenas vacías.CONCAT implicitly converts null values to empty strings. Si CONCAT recibe argumentos en los que todos los valores son NULL, devolverá una cadena vacía de tipo varchar(1).If CONCAT receives arguments with all NULL values, it will return an empty string of type varchar(1). 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. Vea CAST y CONVERT (Transact-SQL) para obtener más información sobre las conversiones de tipo de datos.See CAST and CONVERT (Transact-SQL) for more information about data type conversions.

El tipo devuelto depende del tipo de los argumentos.The return type depends on the type of the arguments. En esta tabla se muestra la asignación:This table illustrates the mapping:

Tipo de entradaInput type Tipo de salida y longitud de datosOutput type and length
1. Cualquier argumento de1. Any argument of

un tipo de sistema de CLR de SQLa SQL-CLR system type

un UDT de CLR de SQLa SQL-CLR UDT

o Administrador de configuración deor

nvarchar(max)
nvarchar(max)nvarchar(max)
2. De lo contrario, cualquier argumento de tipo2. Otherwise, any argument of type

varbinary(max)varbinary(max)

o Administrador de configuración deor

ntextvarchar(max)
varchar(max) , a menos que uno de los parámetros sea un tipo nvarchar de cualquier longitud.varchar(max), unless one of the parameters is an nvarchar of any length. En este caso, CONCAT devuelve un resultado de tipo nvarchar (max) .In this case, CONCAT returns a result of type nvarchar(max).
3. De lo contrario, cualquier argumento de tipo nvarchar de 4000 caracteres como máximo3. Otherwise, any argument of type nvarchar of at most 4000 characters

( nvarchar(<= 4000) )( nvarchar(<= 4000) )
nvarchar(<= 4000)nvarchar(<= 4000)
4. En todos los demás casos4. In all other cases varchar(<= 8000) (un tipo varchar de 8 000 caracteres como máximo) a menos que uno de los parámetros sea un tipo nvarchar de cualquier longitud.varchar(<= 8000) (a varchar of at most 8000 characters) unless one of the parameters is an nvarchar of any length. En ese caso, CONCAT devuelve un resultado de tipo nvarchar (max) .In that case, CONCAT returns a result of type nvarchar(max).

Cuando CONCAT recibe argumentos de entrada nvarchar de longitud <= 4 000 caracteres, o bien argumentos de entrada varchar de longitud <= 8 000 caracteres, las conversiones implícitas pueden afectar a la longitud del resultado.When CONCAT receives nvarchar input arguments of length <= 4000 characters, or varchar input arguments of length <= 8000 characters, implicit conversions can affect the length of the result. Otros tipos de datos tienen otras longitudes cuando se convierten implícitamente a cadenas.Other data types have different lengths when implicitly converted to strings. Por ejemplo, un tipo int (14) tiene una longitud de cadena de 12, mientras que un tipo float tiene una longitud de 32.For example, an int (14) has a string length of 12, while a float has a length of 32. Por tanto, una concatenación de dos enteros devuelve un resultado con una longitud de no menos de 24.Therefore, a concatenation of two integers returns a result with a length of no less than 24.

Si ninguno de los argumentos de entrada tiene un tipo de objeto grande (LOB) admitido, el tipo devuelto se trunca a una longitud de 8 000 caracteres, independientemente del tipo de valor devuelto.If none of the input arguments has a supported large object (LOB) type, then the return type truncates to 8000 characters in length, regardless of the return type. Este truncamiento ahorra espacio y admite la eficacia de la generación de planes.This truncation preserves space and supports plan generation efficiency.

La función CONCAT se puede ejecutar de forma remota en un servidor vinculado de la versión SQL Server 2012 (11.x)SQL Server 2012 (11.x) o versiones posteriores.The CONCAT function can be executed remotely on a linked server of version SQL Server 2012 (11.x)SQL Server 2012 (11.x) and above. Para servidores vinculados anteriores, la operación de CONCAT se realizará localmente, después de que el servidor vinculado devuelva los valores no concatenados.For older linked servers, the CONCAT operation will happen locally, after the linked server returns the non-concatenated values.

EjemplosExamples

A.A. Usar CONCATUsing CONCAT

SELECT CONCAT ( 'Happy ', 'Birthday ', 11, '/', '25' ) AS Result;  

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

Result  
-------------------------  
Happy Birthday 11/25  
  
(1 row(s) affected)  

B.B. Usar CONCAT con valores NULLUsing CONCAT with NULL values

CREATE TABLE #temp (  
    emp_name nvarchar(200) NOT NULL,  
    emp_middlename nvarchar(200) NULL,  
    emp_lastname nvarchar(200) NOT NULL  
);  
INSERT INTO #temp VALUES( 'Name', NULL, 'Lastname' );  
SELECT CONCAT( emp_name, emp_middlename, emp_lastname ) AS Result  
FROM #temp;  

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

Result  
------------------  
NameLastname  
  
(1 row(s) affected)  

Vea tambiénSee also

CONCAT_WS (Transact-SQL) CONCAT_WS (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)