COALESCE avec NULL

J'ai trouvé cet extrait de SQL dans une vue et je suis plutôt perplexe par son but (SQL raccourci pour la brièveté):

SELECT COALESCE(b.Foo, NULL) AS Foo FROM a LEFT JOIN b ON b.aId=a.Id 

Je ne peux pas penser à une seule raison du but de merge avec null au lieu de simplement faire ceci:

 SELECT b.Foo AS Foo FROM a LEFT JOIN b ON b.aId=a.Id 

Ou à tout le less ne pas inclure explicitement la valeur NULL:

 SELECT COALESCE(b.Foo) AS Foo FROM a LEFT JOIN b ON b.aId=a.Id 

Je ne sais pas qui a écrit cela (donc je ne peux pas requestr), quand il a été écrit, ou pour quelle version de MS SQL Server spécifique il a été écrit (avant 2008 bien sûr).

Existe-t-il une raison valable de merge avec NULL au lieu de simplement sélectionner la colonne directement? Je ne peux pas m'empêcher de rire et de l'écrire comme une erreur de débutant, mais je me request s'il y a un «cas marginal» que je ne connais pas.

    Vous avez raison – il n'y a pas de raison d'utiliser:

     SELECT COALESCE(b.Foo, NULL) 

    … car si b.foo est NULL, vous pouvez tout aussi bien utiliser:

     SELECT b.foo 

    … en supposant que vous voulez savoir si la valeur est nulle.

    Je pense qu'il pourrait y avoir un cas limite, mais il est très historique – c'est un peu une conjecture mais il pourrait entourer la situation où b.foo = '' par exemple une string d'espaces.

    Revenez assez loin dans SQL et LTrim ('') returnné null (6 / 6.5), donc je me request si Coalesce sur une string vide l'a également évalué à null, si c'était le cas alors le mécanisme était utilisé pour tourner des strings d'espaces seulement, en valeurs nulles? (Si toutes les valeurs sont nulles, Coalesce renvoie Null.)

    C'est une supposition et je ne peux pas le tester tout de suite, mais cela ne devrait pas être difficile à vérifier.