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.

néophyte
la source
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+.

Karl Kieninger
la source
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.

user2505560
la source
13
J'aime ton raisonnement. Pouvez-vous le soutenir en citant une documentation?
Peter Ivan