私はこれをMicrosoft SQL Server 2008 R2で使用しようとしています:
_SET @SomeVar = @SomeOtherVar +
IIF(@SomeBool, 'value when true', 'value when false')
_
しかし、エラーが発生します:
IIF(...)
は認識される組み込み関数名ではありません
IIF()
は新しいバージョンとのみ互換性がありますか?
使用できる代替機能はありますか?
他の人が言ったように、IIFはSQL 2012からのものです。それ以前は、 CASE
を使用できます。
SET @SomeVar = @SomeOtherVar + CASE
WHEN @SomeBool
THEN 'value when true'
ELSE 'value when false'
END
SQL Server 2012の新機能、 プログラミングの機能強化 :
SQL Server 2012では、14の新しい組み込み関数が導入されています。これらの関数は、多くのデスクトップアプリケーションの式言語にある機能をエミュレートすることにより、インフォメーションワーカーの移行パスを容易にします。ただし、これらの機能は、SQL Serverの経験豊富なユーザーにとっても有用です。
...
Selectの外にある場合は、標準のIFステートメントを使用することもできます。
例えば。
DECLARE @Answer VARCHAR(3) = 'YES'
IF @Answer = 'Yes'
BEGIN
--Do Something if true
END
ELSE
-- Do Soemthing if false
IIF
は、notSQL Server 2008 R2およびそれ以前のバージョンで有効です。
IIF
はSQL Server 2012で導入されました(リンク先のドキュメントページに以前のバージョンへのリンクはありません)。