Recherche…


Syntaxe

  • COALESCE ([Column1], [Column2] .... [ColumnN]

Utilisation de COALESCE pour construire une chaîne délimitée par des virgules

Nous pouvons obtenir une chaîne délimitée par des virgules à partir de plusieurs lignes en utilisant la fusion comme indiqué ci-dessous.

Puisque la variable de table est utilisée, nous devons exécuter une requête entière une fois. Donc, pour faciliter la compréhension, j'ai ajouté BEGIN et 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

Exemple de base de coalescence

COALESCE() renvoie la première NON NULL dans une liste d'arguments. Supposons que nous ayons une table contenant des numéros de téléphone et des numéros de téléphone portable et que nous voulions en retourner une pour chaque utilisateur. Pour n'en obtenir qu'un, nous pouvons obtenir la première 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

Obtenir le premier non nul à partir d'une liste de valeurs de colonne

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
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow