私は、Access DBのVBAで作成したプロジェクトをSQL Server 2008 R2のVB.Netに移行するように要求されました。私は関数 'IIF'がこのようなSQL Serverのバージョンでは組み込み関数として提供されていないことを他のスレッドでも読んでいますが、 '='演算子を使用してブール値を表現することはできないため、 CASEを使った問題は、いくつかのIIFの内部で評価するために複数の式があるということです。短い言葉で組み込み関数IIF
は、これはエラーを生成し、
Iif(Value1 = Value2, 'Some return', 'Another return')
「を=演算子が定義されていません」と、次のようなIIF式はCASE式に変換することができません。
Iif((Value1 = Value2) And (Value3 = Value4), 'Value to return if true', 'Value to return if false')
私は現在、ストアドプロシージャを作成して、この問題を克服するために、プログラミングの構造を利用してますが、ネストされたIIFのがたくさんあるので、それは非効率的な回避策ですよ。
私の質問は、それを行うより効率的な方法はありますか?または私はストアドプロシージャでそれを行う必要がありますか?
ありがとうございます。
のように書き換えることができます。 'Iif((Value1 = Value2)And(Value3 = Value4)、 'ValueがTrueなら返す値'、 'falseなら返す値')'は、Value1 = Value2の場合と等しくなり、Value3 = Value4なら '返す値もしtrueなら 'else' falseならば返す値 'end' –