web-dev-qa-db-ja.com

IIF(...)は認識されている組み込み関数ではありません

私はこれをMicrosoft SQL Server 2008 R2で使用しようとしています:

_SET @SomeVar = @SomeOtherVar +
  IIF(@SomeBool, 'value when true', 'value when false')
_

しかし、エラーが発生します:

IIF(...)は認識される組み込み関数名ではありません

IIF() は新しいバージョンとのみ互換性がありますか?

使用できる代替機能はありますか?

25
Danny Beckett

他の人が言ったように、IIFはSQL 2012からのものです。それ以前は、 CASE を使用できます。

SET @SomeVar = @SomeOtherVar + CASE
 WHEN @SomeBool
 THEN 'value when true'
 ELSE 'value when false'
END
40
Richard

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
4
Will Wainwright

IIFは、notSQL Server 2008 R2およびそれ以前のバージョンで有効です。

IIF はSQL Server 2012で導入されました(リンク先のドキュメントページに以前のバージョンへのリンクはありません)。

4
Oded