+ (concatenazione di stringhe) (Transact-SQL)
Si applica a:SQL Server database SQL di Azure Istanza gestita di SQL di Azure Azure Synapse Analytics AnalyticsPlatform System (PDW)SQL analytics endpoint in Microsoft FabricWarehouse in Microsoft Fabric
Operatore in un'espressione stringa che consente di concatenare in un'unica espressione due o più stringhe di tipo carattere o binario, colonne o una combinazione di nomi di colonna e stringhe (operatore di stringa). Ad esempio SELECT 'book'+'case';
restituisce bookcase
.
Convenzioni di sintassi Transact-SQL
Sintassi
expression + expression
Nota
Per visualizzare la sintassi Transact-SQL per SQL Server 2014 (12.x) e versioni precedenti, vedere la documentazione delle versioni precedenti.
Argomenti
expression
Qualsiasi espressione valida di uno dei tipi di dati della categoria di tipi di dati carattere e binari, tranne i tipi image, ntext o text. È necessario che alle due espressioni sia applicato lo stesso tipo di dati oppure che un'espressione possa essere convertita in modo implicito nel tipo di dati dell'altra espressione.
Per la concatenazione di stringhe binarie e dei caratteri tra le stringhe binarie, è necessario eseguire una conversione esplicita in dati di tipo carattere. Nell'esempio seguente viene illustrato quando è necessario eseguire la funzione CONVERT
o CAST
per la concatenazione binaria e quando invece l'uso di CONVERT
o CAST
non è richiesto.
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))
Tipi restituiti
Viene restituito il tipo di dati dell'argomento con precedenza maggiore. Per altre informazioni, vedere Precedenza dei tipi di dati (Transact-SQL).
Osservazioni:
L'operatore + di concatenazione delle stringhe ha un funzionamento diverso quando viene utilizzato con una stringa vuota, di lunghezza zero, rispetto a quando viene utilizzato con valori NULL, o sconosciuti. Una stringa di caratteri di lunghezza zero può essere specificata con due virgolette singole senza alcun carattere all'interno delle virgolette. Una stringa binaria di lunghezza zero può essere specificata con 0x senza alcun valore byte nella costante esadecimale. La concatenazione di una stringa di valore zero comporta sempre la concatenazione delle due stringhe specificate. Quando si utilizzano stringhe con un valore Null, il risultato della concatenazione dipende dalle impostazioni della sessione. Allo stesso modo di quanto accade per le operazioni aritmetiche eseguite su valori Null, in cui, quando un valore Null viene aggiunto a un valore noto, il risultato è in genere un valore sconosciuto, un'operazione di concatenazione di stringhe eseguita con un valore Null dovrebbe restituire un risultato Null. È tuttavia possibile modificare questo comportamento cambiando l'impostazione di CONCAT_NULL_YIELDS_NULL
per la sessione corrente. Per ulteriori informazioni, vedere SET CONCAT_NULL_YIELDS_NULL (Transact-SQL).
Se il risultato della concatenazione di stringhe supera il limite di 8.000 byte, il risultato viene troncato. Se tuttavia almeno una delle stringhe concatenate è un tipo di dati per valori di grandi dimensioni, il troncamento non avviene.
Esempi
R. Utilizzo della concatenazione di stringhe
Nell'esempio seguente viene creata una singola colonna sotto l'intestazione Name
in base a più colonne di tipo carattere, con il cognome della persona seguito da una virgola, uno spazio e successivamente il nome. Il set di risultati è visualizzato in ordine alfabetico crescente in base prima al cognome e quindi al nome.
-- Uses AdventureWorks
SELECT (LastName + ', ' + FirstName) AS Name
FROM Person.Person
ORDER BY LastName ASC, FirstName ASC;
B. Combinazione di tipi di dati numeric e date
Nell'esempio seguente viene usata la funzione CONVERT
per concatenare i tipi di dati numeric e date.
-- Uses AdventureWorks
SELECT 'The order is due on ' + CONVERT(VARCHAR(12), DueDate, 101)
FROM Sales.SalesOrderHeader
WHERE SalesOrderID = 50001;
GO
Questo è il set di risultati.
------------------------------------------------
The order is due on 04/23/2007
(1 row(s) affected)
C. Utilizzo della concatenazione di più stringhe
Nell'esempio seguente vengono concatenate più stringhe per ottenere un'unica stringa lunga per visualizzare il cognome e l'iniziale del nome dei vicepresidenti in Adventure Works Cycles. Vengono aggiunti una virgola dopo il cognome e un punto dopo l'iniziale del nome.
-- Uses AdventureWorks
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
Questo è il set di risultati.
Name Title
------------- ---------------`
Duffy, T. Vice President of Engineering
Hamilton, J. Vice President of Production
Welcker, B. Vice President of Sales
(3 row(s) affected)
D. Uso di stringhe di grandi dimensioni nella concatenazione
Nell'esempio seguente si concatenano più stringhe per formare una stringa lunga e quindi si prova a calcolare la lunghezza della stringa finale. La lunghezza del set di risultati finale è 16000, perché l'espressione di valutazione viene avviata da sinistra, ovvero @x + @z + @y => (@x + @z) + @y. In questo caso, il risultato di (@x + @z)) viene troncato a 8000 byte, quindi @y viene aggiunto al set di risultati. Pertanto la lunghezza finale della stringa è 16000. Dato che @y è una stringa con tipo di dati per valori di grandi dimensioni non si verifica nessun troncamento.
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
Questo è il set di risultati.
y
-------
16000
(1 row(s) affected)
Esempi: Azure Synapse Analytics e Piattaforma di strumenti analitici (PDW)
E. Utilizzo della concatenazione di più stringhe
Nell'esempio seguente vengono concatenate più stringhe per ottenere un'unica stringa di lunghezza maggiore per visualizzare il cognome e l'iniziale del nome dei vicepresidenti in un database di esempio. Vengono aggiunti una virgola dopo il cognome e un punto dopo l'iniziale del nome.
-- Uses AdventureWorks
SELECT (LastName + ', ' + SUBSTRING(FirstName, 1, 1) + '.') AS Name, Title
FROM DimEmployee
WHERE Title LIKE '%Vice Pres%'
ORDER BY LastName ASC;
Questo è il set di risultati.
Name Title
------------- ---------------
Duffy, T. Vice President of Engineering
Hamilton, J. Vice President of Production
Welcker, B. Vice President of Sales
Vedi anche
+= (assegnazione di concatenazione di stringhe) (Transact-SQL)
ALTER DATABASE (Transact-SQL)
CAST e CONVERT (Transact-SQL)
Conversione del tipo di dati (motore di database)
Tipi di dati (Transact-SQL)
Espressioni (Transact-SQL)
Funzioni predefinite (Transact-SQL)
Operatori (Transact-SQL)
SELECT (Transact-SQL)
Istruzioni edizione Standard T (Transact-SQL)
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per