SQL ServerIIFとCASE


87

最近IIF、SQL Server2012での関数の可用性について知りましたCASE。クエリでは常にネストを使用しています。IIFステートメントの正確な目的と、クエリでステートメントよりも使用IIFする方がよい場合を知りたいのですがCASE。私は主CASEにクエリでネストを使用します。

すべての入力に感謝します。


9
IIFは、単純なCASEステートメントの省略形です。クエリの最適化と実行のためのcaseステートメントに変換されます:technet.microsoft.com/en-us/library/hh213574.aspx
Sam DeHaan 2014

読みやすいので、速記が標準の一部ではないのは残念です(最近は何ですか?ANSISQL?)。しかし、T-SQLは常に少し...「言葉遣い」でした。
ニールバーンウェル2017

回答:


144

IIFと同じCASE WHEN <Condition> THEN <true part> ELSE <false part> ENDです。クエリプランは同じになります。おそらく、最初に実装された「シンタックスシュガー」です。

CASEはすべてのSQLプラットフォーム間で移植可能ですが、IIFはSQL SERVER2012 +固有です。


6
おそらく、Access / VB開発者が構文を覚えやすくするためです。
おもしろい名前-ここでは

20

IIFは非標準のT-SQL関数です。これはSQLSERVER 2012に追加されたため、事前にIIFをCASEにリファクタリングすることなくAccessをSQLServerに移行できました。AccessデータベースがSQLServerに完全に移行されたら、リファクタリングできます。


13
私はあなたの推論が好きです。いくつかのドキュメントを引用してそれをサポートできますか?
Peter Ivan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.