je dois changer certaines requêtes SQL (SQL Server 2005) effectuées par une autre personne et dans ce code, je vois souvent la construction suivante:SQL avec un but inconnu
SELECT fieldA, SUM(CASE fieldB WHEN null THEN 0 ELSE fieldB END) as AliasName FROM ...
Je ne comprends pas la déclaration de cas parce que pour autant que je sache, nul ne peut être vérifiée dans un cas et donc je pense que le code ci-dessus fait la même chose que:
SELECT fieldA, SUM(fieldB) as AliasName FROM ...
J'ai aussi fait quelques tests et n'ont pas vu de différences dans le résultat. Ai-je oublié quelque chose, ou est-ce que je peux remplacer la déclaration supérieure par la plus courte?
MISE À JOUR
seulement pour être complet, car il est pas mentionné dans les réponses: Le code supérieur renvoie le même résultat que la partie inférieure. La construction case
utilisée ne remplace pas les null par les zéros et peut donc être ignorée. Si le but du sql d'origine était de s'assurer que jamais null ne sera retourné, le coalesce
ou le isnull
-operator peut être utilisé (comme indiqué dans les réponses).
Peut-être qu'ils ne savent pas COALESCE – Bonshington