Si vous avez déjà fait des “stores procedure“, vous avez sûrement rencontré, à un moment ou à un autre, une procédure comme celle-ci:

IF(NOT @yard_id IS NULL)
BEGIN
SELECT * FROM Yards WHERE yard_id = @yard_id AND year = @year;
END
ELSE
BEGIN
SELECT * FROM Yards WHERE year = @year;
END

Cette situation arrive, entre autres, lorsque nous avons un paramètre “optionnel” et que nous voulons qu’il n’influence pas le résultat lorsqu’il est absent.

Une autre version de cette même requête serait alors

SELECT * FROM Yards
WHERE yard_id = COALESCE(@yard_id, dbo.YardReport.yard_id)
AND year = @year;

COALESCE, qui semble être la traduction de FUSIONNER, fait en sorte de retourner le premier paramètre non nul de ses arguments. Dans notre situation, si @yard_id est nul, COALESCE vas retourner la valeur de la ligne en cours, ce qui est toujours vrai.

Parmis les avantages de cette utilisation, les plus intéressantes sont la maintenance du code et la lisibilité. Effectivement, dans des requêtes plus complexes, la deuxième représentation sera beaucoup plus facile à maintenir.

Bonne pratique