+ (Concatenación de cadenas) (Transact-SQL)

Es un operador de una expresión de cadenas que concatena dos o más cadenas de caracteres o binarias, columnas o una combinación de nombres de columna y cadenas en una expresión (un operador de cadenas).

Icono de vínculo a temasConvenciones de sintaxis de Transact-SQL

Sintaxis

expression + expression

Argumentos

expression

Es cualquier expresión válida de uno de los tipos de datos de la categoría de tipos de datos de caracteres o binarios excepto los tipos de datos image, ntext o text. Ambas expresiones deben ser del mismo tipo de datos o una se debe poder convertir implícitamente en el tipo de datos de la otra.

Debe utilizarse una conversión explícita a datos caracteres cuando se concatenan cadenas binarias y cualesquiera caracteres entre las cadenas binarias. En el ejemplo siguiente se muestra cuándo se debe utilizar CONVERT o CAST con la concatenación binaria y cuándo no es necesario este uso.

DECLARE @mybin1 binary(5), @mybin2 binary(5)
SET @mybin1 = 0xFF
SET @mybin2 = 0xA5
-- No CONVERT or CAST function is required because this example 
-- concatenates two binary strings.
SELECT @mybin1 + @mybin2
-- A CONVERT or CAST function is required because this example
-- concatenates two binary strings plus a space.
SELECT CONVERT(varchar(5), @mybin1) + ' ' 
   + CONVERT(varchar(5), @mybin2)
-- Here is the same conversion using CAST.
SELECT CAST(@mybin1 AS varchar(5)) + ' ' 
   + CAST(@mybin2 AS varchar(5))

Notas

El operador + (Concatenación de cadenas) se comporta de modo distinto cuando trabaja con una cadena vacía de longitud cero que cuando trabaja con valores NULL o desconocidos. Se puede especificar una cadena de caracteres de longitud cero como dos comillas simples sin caracteres incluidos entre las comillas. Se puede especificar una cadena binaria de longitud cero como 0x sin ningún valor de byte especificado en la constante hexadecimal. La concatenación de una cadena de longitud cero siempre concatena las dos cadenas especificadas. Si trabaja con cadenas de valor NULL, el resultado de la concatenación depende de la configuración de la sesión. Al igual que en las operaciones aritméticas realizadas con valores NULL, si se agrega un valor NULL a un valor conocido, el resultado suele ser un valor desconocido y la operación de concatenación de cadenas que se realiza con un valor NULL también debe generar un resultado NULL. No obstante, puede modificar este comportamiento si cambia la configuración de CONCAT_NULL_YIELDS_NULL para la sesión actual. Para obtener más información, vea SET CONCAT_NULL_YIELDS_NULL (Transact-SQL).

Si el resultado de la concatenación de cadenas es superior al límite de 8.000 bytes, el resultado se trunca. Sin embargo, si una de las cadenas concatenadas como mínimo es un tipo de valor grande, no se produce el truncamiento.

Tipos de resultado

Devuelve el tipo de datos del argumento con la mayor prioridad. Para obtener más información, vea Prioridad de tipo de datos (Transact-SQL).

Ejemplos

A. Usar la concatenación de cadenas

En el siguiente ejemplo se crea una sola columna en el encabezado de columna Name de varias columnas de caracteres, con el apellido del contacto seguido de una coma, un solo espacio y, a continuación, el nombre del contacto. El conjunto de resultados está en orden alfabético ascendente por el apellido y, a continuación, por el nombre.

USE AdventureWorks;
GO
SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Contact
ORDER BY LastName ASC, FirstName ASC;

B. Combinar los tipos de datos numeric y date

En el siguiente ejemplo se utiliza la función CONVERT para concatenar los tipos de datos numeric y date.

USE AdventureWorks;
GO
SELECT 'The order is due on ' + CONVERT(varchar(12), DueDate, 101)
FROM Sales.SalesOrderHeader
WHERE SalesOrderID = 50001;
GO

Éste es el conjunto de resultados. 

------------------------------------------------ 
The order is due on 04/23/2003            

(1 row(s) affected)

C. Usar la concatenación de varias cadenas

En el siguiente ejemplo se concatenan varias cadenas para formar una cadena larga que muestra el apellido y la primera inicial de los vicepresidentes de Adventure Works Cycles. Se agrega una coma después del apellido y un punto después de la primera inicial.

USE AdventureWorks;
GO
SELECT (LastName + ',' + SPACE(1) + SUBSTRING(FirstName, 1, 1) + '.') AS Name, e.Title
FROM Person.Contact AS c
    JOIN HumanResources.Employee AS e
    ON c.ContactID = e.ContactID
WHERE e.Title LIKE 'Vice%'
ORDER BY LastName ASC;
GO

Éste es el conjunto de resultados. 

Name               Title                                         
-------------      ---------------
Duffy, T.         Vice President of Engineering
Hamilton, J.      Vice President of Production
Welcker, B.       Vice President of Sales
(3 row(s) affected)

Vea también

Referencia

ALTER DATABASE (Transact-SQL)
CAST y CONVERT (Transact-SQL)
Tipos de datos (Transact-SQL)
Expresiones (Transact-SQL)
Funciones (Transact-SQL)
Operadores (Transact-SQL)
SELECT (Transact-SQL)
SET (Transact-SQL)

Otros recursos

Conversiones de tipos de datos (motor de base de datos)
Configurar las opciones de la base de datos

Ayuda e información

Obtener ayuda sobre SQL Server 2005