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.