Zoeken…


Syntaxis

  • COALESCE ([Kolom1], [Column2] .... [columnn]

COALESCE gebruiken om door komma's gescheiden tekenreeksen te bouwen

We kunnen een door komma's gescheiden tekenreeks uit meerdere rijen halen met behulp van coalesce, zoals hieronder wordt weergegeven.

Aangezien de tabelvariabele wordt gebruikt, moeten we de hele zoekopdracht eenmaal uitvoeren. Dus om het gemakkelijk te begrijpen, heb ik BEGIN en END block toegevoegd.

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

Coalesce basic-voorbeeld

COALESCE() retourneert de eerste NON NULL waarde in een lijst met argumenten. Stel dat we een tabel met telefoonnummers en mobiele nummers hadden en slechts één voor elke gebruiker wilden retourneren. Om er slechts één te verkrijgen, kunnen we de eerste NON NULL waarde krijgen.

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

De eerste niet-nul krijgen uit een lijst met kolomwaarden

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
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow