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.


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.


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.


12
Ich mag deine Argumentation. Können Sie dies unterstützen, indem Sie einige Dokumentationen zitieren?
Peter Ivan
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.