Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:SQL Server
Azure SQL Database
Instancia administrada de Azure SQL
Azure Synapse Analytics
Analytics Platform System (PDW)
Punto de conexión de SQL Analytics en Microsoft Fabric
Almacén en Microsoft Fabric
Base de datos SQL en Microsoft Fabric
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). Por ejemplo, SELECT 'book'+'case'; devuelve bookcase.
Convenciones de sintaxis de Transact-SQL
Syntax
expression + expression
Arguments
expression
Cualquier expresión válida de cualquiera de los tipos de datos de la categoría de tipos de datos binarios y caracteres, 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.
Tipos de retorno
Devuelve el tipo de datos del argumento con la mayor prioridad. Para obtener más información, consulte Precedencia de tipos de datos.
Remarks
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 al menos una de las cadenas concatenadas es un tipo de valor grande, no se produce el truncamiento.
Cadenas y caracteres de longitud cero
El + operador de concatenación de cadenas se comporta de forma diferente cuando funciona con una cadena vacía de longitud cero que cuando funciona con NULLvalores , 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.
Concatenación de valores NULL
Cuando se trabaja con cadenas con un NULL valor, el resultado de la concatenación depende de la configuración de la sesión. Al igual que con las operaciones aritméticas que se realizan en NULL valores, cuando se agrega un NULL valor a un valor conocido, el resultado suele ser un valor desconocido, una operación de concatenación de cadenas realizada con un NULL valor, también debe generar un NULL resultado.
No obstante, puede modificar este comportamiento si cambia la configuración de CONCAT_NULL_YIELDS_NULL para la sesión actual. Para más información, consulte SET CONCAT_NULL_YIELDS_NULL.
Uso de CAST y CONVERT cuando sea necesario
Debe utilizarse una conversión explícita a datos caracteres cuando se concatenan cadenas binarias y cualesquiera caracteres entre las cadenas binarias.
Los ejemplos siguientes muestran cuándo CONVERTse debe usar , o CAST, con la concatenación binaria y cuando CONVERTno es necesario usar , o CAST.
En este ejemplo, no se requiere ninguna CONVERT función o CAST porque en este ejemplo se concatenan dos cadenas binarias.
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;
En este ejemplo, se requiere una CONVERT función o CAST porque en este ejemplo se concatenan dos cadenas binarias más un espacio.
DECLARE @mybin1 VARBINARY(5), @mybin2 VARBINARY(5);
SET @mybin1 = 0xFF;
SET @mybin2 = 0xA5;
-- 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));
Examples
Los ejemplos de código de este artículo usan la base de datos de ejemplo de AdventureWorks2025 o AdventureWorksDW2025, que puede descargar de la página principal de Ejemplos de Microsoft SQL Server y proyectos de comunidad.
A. Uso de la concatenación de cadenas
En el ejemplo siguiente se crea una sola columna bajo el encabezado Name de columna de varias columnas de caracteres, con el nombre de familia de la persona seguida de una coma, un único espacio y, a continuación, el nombre de la persona. El conjunto de resultados está en orden ascendente alfabético por el nombre de familia y, a continuación, por el nombre.
SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Person
ORDER BY LastName ASC, FirstName ASC;
B. Combinar tipos de datos numéricos y de fecha
En el siguiente ejemplo se usa la función CONVERT para concatenar los tipos de datos numeric y date.
SELECT 'The order is due on ' + CONVERT(VARCHAR(12), DueDate, 101)
FROM Sales.SalesOrderHeader
WHERE SalesOrderID = 50001;
GO
Este es el conjunto de resultados.
------------------------------------------------
The order is due on 04/23/2007
C. Uso de la concatenación de varias cadenas
En el ejemplo siguiente se concatenan varias cadenas para formar una cadena larga para mostrar el nombre de familia y la primera inicial de los vicepresidentes en Adventure Works Cycles. Una coma se agrega después del nombre de familia y un punto después de la primera inicial.
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
Este 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
D. Uso de cadenas grandes en concatenación
En el siguiente ejemplo se concatenan varias cadenas para formar una cadena larga y, luego, se intenta calcular la longitud de la cadena final. La longitud final del conjunto de resultados es de 16 000, ya que la evaluación de expresiones comienza desde la izquierda, es decir, @x + @z + @y=> (@x + @z) + . @y En este caso, el resultado de (@x + @z) se trunca a 8000 bytes y, a continuación @y , se agrega al conjunto de resultados, lo que hace que la longitud final de la cadena sea de 16 000. Dado que @y es una cadena de tipo de valor grande, no se produce el truncamiento.
DECLARE @x VARCHAR(8000) = REPLICATE('x', 8000)
DECLARE @y VARCHAR(max) = REPLICATE('y', 8000)
DECLARE @z VARCHAR(8000) = REPLICATE('z',8000)
SET @y = @x + @z + @y
-- The result of following select is 16000
SELECT LEN(@y) AS y
GO
Este es el conjunto de resultados.
y
-------
16000
Ejemplos: Azure Synapse Analytics y Sistema de la plataforma de análisis (PDW)
Los ejemplos de código de este artículo usan la base de datos de ejemplo de AdventureWorks2025 o AdventureWorksDW2025, que puede descargar de la página principal de Ejemplos de Microsoft SQL Server y proyectos de comunidad.
E. Uso de la concatenación de varias cadenas
En el ejemplo siguiente se concatenan varias cadenas para formar una cadena larga para mostrar el nombre de familia y la primera inicial de los vicepresidentes dentro de una base de datos de ejemplo. Una coma se agrega después del nombre de familia y un punto después de la primera inicial.
SELECT (LastName + ', ' + SUBSTRING(FirstName, 1, 1) + '.') AS Name, Title
FROM DimEmployee
WHERE Title LIKE '%Vice Pres%'
ORDER BY LastName ASC;
Este 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
Contenido relacionado
- || (Concatenación de cadenas) (Transact-SQL)
- += (Asignación de concatenación de cadenas) (Transact-SQL)
- BASE DE DATOS ALTER (Transact-SQL)
- CAST y CONVERT (Transact-SQL)
- Conversión de tipos de datos (Motor de base de datos)
- Tipos de datos (Transact-SQL)
- Expresiones (Transact-SQL)
- Funciones integradas (Transact-SQL)
- Operadores (Transact-SQL)
- SELECT (Transact-SQL)
- Instrucciones SET (Transact-SQL)