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.


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+.


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ć.


13
Podoba mi się twoje rozumowanie. Czy możesz to poprzeć, cytując jakąś dokumentację?
Peter Ivan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.