Compartir a través de


+ (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 temas Convenciones 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 varbinary(5), @mybin2 varbinary(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))
    

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).

Comentarios

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.

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 de la persona seguido de una coma, un solo espacio y, a continuación, el nombre de la persona. El conjunto de resultados está en orden alfabético ascendente por el apellido y, a continuación, por el nombre.

USE AdventureWorks2012;
GO
SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Person
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 AdventureWorks2012;
GO
SELECT 'The order is due on ' + CONVERT(varchar(12), DueDate, 101)
FROM Sales.SalesOrderHeader
WHERE SalesOrderID = 50001;
GO

El conjunto de resultados es el siguiente.

------------------------------------------------

The order is due on 04/23/2007

(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 AdventureWorks2012;
GO
SELECT (LastName + ',' + SPACE(1) + SUBSTRING(FirstName, 1, 1) + '.') AS Name, e.JobTitle
FROM Person.Person AS p
    JOIN HumanResources.Employee AS e
    ON p.BusinessEntityID = e.BusinessEntityID
WHERE e.JobTitle LIKE 'Vice%'
ORDER BY LastName ASC;
GO

El conjunto de resultados es el siguiente.

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

Operadores (Transact-SQL)

SELECT (Transact-SQL)

Instrucciones SET (Transact-SQL)

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

Conceptos

Conversiones de tipos de datos (motor de base de datos)