2014-04-03 11 views
38

Niedawno dowiedziałem się o dostępności funkcji IIF w SQL Server 2012. Zawsze używam zagnieżdżonego CASE w moich zapytaniach. Chciałbym znać dokładny cel oświadczenia IIF i kiedy powinniśmy woli używać IIF nad CASE Statement w kwerendzie. Najczęściej używam zagnieżdżonego CASE w moich zapytaniach.SQL Server IIF vs CASE

Dzięki za wszystkie dane wejściowe.

+3

IIF jest skrótem do prostej instrukcji CASE. Jest nawet tłumaczone na instrukcję case dla optymalizacji i wykonywania zapytań: http://technet.microsoft.com/en-us/library/hh213574.aspx –

+0

Szkoda, że ​​skrót nie jest częścią standardu (co to jest te dni? ANSISQL?), ponieważ jest o wiele łatwiejsze do odczytania. Ale potem T-SQL zawsze był trochę ... "rozwlekły". –

Odpowiedz

72

IIF jest tożsamy ​​z CASE WHEN <Condition> THEN <true part> ELSE <false part> END. Plan zapytania będzie taki sam. To prawdopodobnie "cukier syntaktyczny", jak początkowo wdrożono.

CASE jest przenośny we wszystkich platformach SQL, podczas gdy IIF jest specyficzny dla SQL SERVER 2012+.

+1

Prawdopodobnie, aby ułatwić programistom Access/VB zapamiętanie składni. – GibralterTop

7

IIF to niestandardowa funkcja T-SQL. Został on dodany do SQL SERVER 2012, dzięki czemu program Access mógł migrować do SQL Server bez konieczności wcześniejszego refakturowania IIF do CASE. Gdy baza danych Access zostanie w pełni przeniesiona do SQL Server, możesz ją zreorganizować.

+2

Podoba mi się twoje rozumowanie. Czy możesz wesprzeć go, cytując niektóre dokumenty? –