Ricerca…


Sintassi

  • COALESCE ([Colonna1], [Colonna2] .... [columnn]

Utilizzo di COALESCE per creare una stringa delimitata da virgola

Possiamo ottenere una stringa delimitata da virgole da più righe usando la coalescenza come mostrato di seguito.

Poiché viene utilizzata la variabile di tabella, è necessario eseguire un'intera query una volta. Per semplificare la comprensione, ho aggiunto il blocco BEGIN e END.

BEGIN

    --Table variable declaration to store sample records
    DECLARE @Table TABLE (FirstName varchar(256), LastName varchar(256))

    --Inserting sample records into table variable @Table
    INSERT INTO @Table (FirstName, LastName)
    VALUES
    ('John','Smith'),
    ('Jane','Doe')

    --Creating variable to store result          
    DECLARE @Names varchar(4000)

    --Used COLESCE function, so it will concatenate comma seperated FirstName into @Names varible
    SELECT @Names = COALESCE(@Names + ',', '') + FirstName
    FROM @Table

    --Now selecting actual result 
    SELECT @Names
    END

Esempio di base di Coalesce

COALESCE() restituisce il primo valore NON NULL in un elenco di argomenti. Supponiamo di avere una tabella contenente numeri di telefono e numeri di cellulare e di voler restituire solo una per ciascun utente. Per ottenerne solo uno, possiamo ottenere il primo valore NON NULL .

DECLARE @Table TABLE (UserID int, PhoneNumber varchar(12), CellNumber varchar(12))
INSERT INTO @Table (UserID, PhoneNumber, CellNumber)
VALUES
(1,'555-869-1123',NULL),
(2,'555-123-7415','555-846-7786'),
(3,NULL,'555-456-8521')


SELECT
    UserID,
    COALESCE(PhoneNumber, CellNumber)
FROM
    @Table

Ottenere il primo non null da un elenco di valori di colonna

SELECT COALESCE(NULL, NULL, 'TechOnTheNet.com', NULL, 'CheckYourMath.com');
Result: 'TechOnTheNet.com'

SELECT COALESCE(NULL, 'TechOnTheNet.com', 'CheckYourMath.com');
Result: 'TechOnTheNet.com'

SELECT COALESCE(NULL, NULL, 1, 2, 3, NULL, 4);
Result: 1


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow