CONCAT (Transact-SQL)

Devuelve una cadena que es el resultado de concatenar dos o más valores de cadena.

Icono de vínculo a temas Convenciones de sintaxis de Transact-SQL

Sintaxis

CONCAT ( string_value1, string_value2 [, string_valueN ] )

Argumentos

  • string_value
    Valor de cadena que se va a concatenar con los demás valores.

Tipos devueltos

Cadena cuyo tipo y longitud dependen de la entrada.

Comentarios

CONCAT toma un número variable de argumentos de cadena y los concatena en una sola cadena. Necesita un mínimo de dos valores de entrada; de lo contrario, se produce un error. Todos los argumentos se convierten implícitamente a tipos string y después se concatenan. Los valores NULL se convierten implícitamente a una cadena vacía. Si todos los argumentos son NULL, se devuelve una cadena vacía de tipo varchar(1). La conversión implícita de cadenas sigue las reglas existentes para las conversiones de tipos de datos. Para obtener más información acerca de las conversiones de tipos de datos, vea CAST y CONVERT (Transact-SQL).

El tipo devuelto depende del tipo de los argumentos. En la tabla siguiente se muestra la asignación.

Tipo de entrada

Tipo de salida y longitud de datos

Si cualquier argumento es un tipo de sistema SQL-CLR, SQL-CLR UDT o nvarchar(max)

nvarchar(max)

De lo contrario, si cualquier argumento es varbinary(max) o varchar(max)

varchar(max) a menos que uno de los parámetros sea un nvarchar de cualquier longitud. En tal caso, el resultado es de tipo nvarchar(max).

De lo contrario, si cualquier argumento es nvarchar(<= 4000)

nvarchar(<= 4000)

De lo contrario, en todos los demás casos

varchar(<= 8000) a menos que uno de los parámetros sea un nvarchar de cualquier longitud. En tal caso, el resultado es de tipo nvarchar(max).

Cuando los argumentos son <= 4000 para nvarchar o <= 8000 para varchar, las conversiones implícitas pueden afectar a la longitud del resultado. Otros tipos de datos tienen distintas longitudes cuando se convierten implícitamente a cadenas. Por ejemplo, int (14) tiene una longitud de cadena de 12, mientras que float tiene una longitud de 32. Por tanto, el resultado de concatenar dos enteros tiene una longitud no menor que 24.

Si ninguno de los argumentos de entrada es de un tipo de objeto grande (LOB) admitido, el tipo devuelto se trunca a una longitud de 8000, independientemente del tipo de valor devuelto. Este truncamiento ahorra espacio y admite eficacia en la generación del plan.

Esta función se puede enviar de forma remota a servidores de SQL Server 2012 y superiores. No se puede enviar de forma remota a servidores que tengan una versión inferior a SQL Server 2012.

Ejemplos

A.Usar CONCAT

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

El conjunto de resultados es el siguiente.

Result
-------------------------
Happy Birthday 11/25

(1 row(s) affected)

B.Usar CONCAT con valores NULL

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.

Result
------------------
NameLastname

(1 row(s) affected)