SQL Server IIF gegen CASE

85

Ich habe kürzlich von der Verfügbarkeit von IIFFunktionen in SQL Server 2012 erfahren . Ich verwende CASEin meinen Abfragen immer verschachtelte Funktionen . Ich möchte den genauen Zweck der wissen IIFAussage und wann sollten wir verwenden lieber IIFüber CASEStatement in der Abfrage. Ich verwende meistens verschachtelt CASEin meinen Abfragen.

Danke für alle Eingaben.

Neophyt
quelle
9
IIF ist nur eine Abkürzung für eine einfache CASE-Anweisung. Es wird sogar in eine case-Anweisung zur Optimierung und Ausführung von Abfragen übersetzt: technet.microsoft.com/en-us/library/hh213574.aspx
Sam DeHaan
Es ist eine Schande, dass die Kurzschrift nicht Teil des Standards ist (was ist das heutzutage? ANSISQL?), Da sie viel einfacher zu lesen ist. Aber dann war T-SQL immer ein bisschen ... "wortreich".
Neil Barnwell

Antworten:

139

IIFist das gleiche wie CASE WHEN <Condition> THEN <true part> ELSE <false part> END. Der Abfrageplan ist derselbe. Es ist vielleicht "syntaktischer Zucker", wie ursprünglich implementiert.

CASE ist auf allen SQL-Plattformen portierbar, während IIF SQL SERVER 2012+ -spezifisch ist.

Karl Kieninger
quelle
5
Wahrscheinlich, um Access / VB-Entwicklern das Erinnern an die Syntax zu erleichtern.
interessanter Name hier
20

IIF ist eine nicht standardmäßige T-SQL-Funktion. Es wurde zu SQL SERVER 2012 hinzugefügt, damit Access auf SQL Server migrieren kann, ohne die IIFs zuvor in CASE umgestalten zu müssen. Sobald die Access-Datenbank vollständig in SQL Server migriert ist, können Sie sie umgestalten.

user2505560
quelle
12
Ich mag deine Argumentation. Können Sie dies unterstützen, indem Sie einige Dokumentationen zitieren?
Peter Ivan