Microsoft SQL Server
SE FONDRE
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