Sök…


Syntax

  • COALESCE ([kolumn1], [kolumn2] .... [ColumnN]

Använda COALESCE för att bygga kommadelimerad sträng

Vi kan få en kommaavgränsad sträng från flera rader med coalesce som visas nedan.

Eftersom tabellvariabel används måste vi köra hela frågan en gång. Så för att göra det lätt att förstå har jag lagt till BEGIN och END block.

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-grundexempel

COALESCE() returnerar det första NON NULL värdet i en lista med argument. Anta att vi hade en tabell som innehåller telefonnummer och mobiltelefonnummer och ville bara returnera en för varje användare. För att endast få ett, kan vi få det första NON NULL värdet.

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

Få den första inte noll från en lista med kolumnvärden

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
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow