Suche…


Syntax

  • COALESCE ([Spalte1], [Spalte2] .... [SpalteN])

Verwenden von COALESCE zum Erstellen einer durch Kommas getrennten Zeichenfolge

Wir können eine durch Kommas getrennte Zeichenfolge aus mehreren Zeilen mit Hilfe von coalesce erhalten, wie unten gezeigt.

Da die Tabellenvariable verwendet wird, müssen Sie die gesamte Abfrage einmal ausführen. Um es leicht verständlich zu machen, habe ich den BEGIN- und END-Block hinzugefügt.

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

COALESCE() gibt den ersten NON NULL Wert in einer Liste von Argumenten zurück. Nehmen wir an, wir hätten eine Tabelle mit Telefonnummern und Handynummern und wollten nur eine für jeden Benutzer zurückgeben. Um nur einen zu erhalten, können wir den ersten NON NULL Wert erhalten.

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

Der erste Wert ist nicht null aus einer Liste von Spaltenwerten

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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow