SQL Server IIF et CASE


87

J'ai récemment appris la disponibilité de la IIFfonction dans SQL Server 2012. J'utilise toujours imbriqué CASEdans mes requêtes. Je veux savoir le but exact de l' IIFinstruction et quand devrions-nous préférer utiliser IIFsur CASEStatement dans la requête. J'utilise principalement imbriqué CASEdans mes requêtes.

Merci pour toutes les contributions.


9
IIF est juste un raccourci pour une simple instruction CASE. Il est même traduit en une déclaration de cas pour l'optimisation et l'exécution des requêtes
Sam DeHaan

C'est dommage que la sténographie ne fasse pas partie de la norme (qu'est-ce que c'est de nos jours? ANSISQL?) Car elle est beaucoup plus facile à lire. Mais alors T-SQL a toujours été un peu ... "verbeux".
Neil Barnwell

Réponses:


144

IIFest le même que CASE WHEN <Condition> THEN <true part> ELSE <false part> END. Le plan de requête sera le même. Il s'agit peut-être du «sucre syntaxique» tel qu'initialement mis en œuvre.

CASE est portable sur toutes les plates-formes SQL alors que IIF est spécifique à SQL SERVER 2012+.


6
Probablement pour faciliter la mémorisation de la syntaxe par les développeurs Access / VB.
nom-intéressant-ici

20

IIF est une fonction T-SQL non standard. Il a été ajouté à SQL SERVER 2012, de sorte qu'Access puisse migrer vers SQL Server sans refactoriser les IIF en CASE au préalable. Une fois que la base de données Access est entièrement migrée vers SQL Server, vous pouvez refactoriser.


13
J'aime ton raisonnement. Pouvez-vous le soutenir en citant une documentation?
Peter Ivan
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.