web-dev-qa-db-fra.com

SQL Server IIF vs CASE

J'ai récemment appris la disponibilité de la fonction IIF dans SQL Server 2012. J'utilise toujours imbriqué CASE dans mes requêtes. Je veux connaître le but exact de l'instruction IIF et quand devrions-nous préférer utiliser IIF par rapport à CASE instruction dans la requête. J'utilise principalement CASE imbriqué dans mes requêtes.

Merci pour toutes les entrées.

70
neophyte

IIF est identique à 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’implémenté initialement.

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

121
Karl Kieninger

IIF est une fonction T-SQL non standard. Il a été ajouté à SQL SERVER 2012 pour permettre à Access de migrer vers SQL Server sans refactoriser à l'avance les IIF dans CASE. Une fois que la base de données Access est entièrement migrée vers SQL Server, vous pouvez la refactoriser.

15
user2505560