+ (concatenazione di stringhe) (Transact-SQL)

Operatore in un'espressione stringa che concatena 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).

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

expression + expression

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 e 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 la conversione non è richiesta.

    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 ulteriori 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 conosciuto, il risultato è in genere un valore sconosciuto, un'operazione di concatenazione di stringhe eseguita con un valore Null dovrebbe restituire un risultato Null. È possibile tuttavia 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

A. Utilizzo della concatenazione di stringhe

Nell'esempio seguente viene creata una colonna sotto l'intestazione Name in base a più colonne di tipo carattere, con il cognome del contatto seguito da una virgola, uno spazio e il nome del contatto. Il set di risultati è visualizzato in ordine alfabetico crescente in base prima al cognome e quindi al nome.

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

B. Combinazione di tipi di dati numeric e date

Nell'esempio seguente viene utilizzata la funzione CONVERT per concatenare i tipi di dati numeric e date.

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

Set di risultati:

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

(1 row(s) affected)

C. 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 Adventure Works Cycles. Vengono aggiunti una virgola dopo il cognome e un punto dopo l'iniziale del nome.

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

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)