SQL Server IIF vs CASE

87

Niedawno dowiedziałem się o dostępności IIFfunkcji w SQL Server 2012. CASEW swoich zapytaniach zawsze używam zagnieżdżonych . Chcę poznać dokładny cel IIFinstrukcji i kiedy powinniśmy preferować użycie instrukcji IIFzamiast CASEinstrukcji w zapytaniu. Najczęściej używam zagnieżdżonych CASEw moich zapytaniach.

Dzięki za wszystkie uwagi.

neofita
źródło
9
IIF to tylko skrót dla prostej instrukcji CASE. Jest nawet przetłumaczone na instrukcję case do optymalizacji i wykonywania zapytań
Sam DeHaan
1
Szkoda, że ​​skrót nie jest częścią standardu (co to jest obecnie? ANSISQL?), Ponieważ jest znacznie łatwiejszy do odczytania. Ale z drugiej strony T-SQL zawsze był trochę… „rozwlekły”.
Neil Barnwell

Odpowiedzi:

144

IIF jest taki sam jak CASE WHEN <Condition> THEN <true part> ELSE <false part> END . Plan kwerend będzie taki sam. Jest to być może „cukier syntaktyczny”, jak pierwotnie zaimplementowano.

CASE jest przenośny na wszystkie platformy SQL, podczas gdy IIF jest specyficzny dla SQL SERVER 2012+.

Karl Kieninger
źródło
6
Prawdopodobnie, aby ułatwić programistom Access / VB zapamiętanie składni.
interesująca-nazwa-tutaj
20

IIF to niestandardowa funkcja T-SQL. Został dodany do SQL SERVER 2012, aby Access mógł migrować do SQL Server bez wcześniejszej refaktoryzacji IIF do CASE. Gdy baza danych Access zostanie w pełni zmigrowana do programu SQL Server, można ją refaktoryzować.

user2505560
źródło
13
Podoba mi się twoje rozumowanie. Czy możesz to poprzeć, cytując jakąś dokumentację?
Peter Ivan