web-dev-qa-db-ja.com

SQL Server 2008 IIFステートメントが有効になっていないようです

SelectステートメントでIIF()を使用しようとしています。ブール式は、フィールド値が空の文字列と等しいかどうかを確認します。構文は次のとおりです。

SELECT IIF(field = '','ONe action','Another')

「構文エラー=近くの構文エラー」が表示されます

私は簡単なテストを試しました:

SELECT IIF(2 > 1, 'yes','no')

そして、私は"syntax errror near >"

これは、IIFがまったく機能していないと思うようになります。

SQL SERVER 2008 R2を使用していますが、IIF()が機能するように構成する必要があるものはありますか?私が見逃している構文について何かありますか?私のテストはできる限り単純で、まだ構文エラーが発生します。

任意の助けをいただければ幸いです。どうもありがとう!

35
TheMethod

前述のとおり、IIFはSQL2012の機能です。

IIFCASEに置き換えます(これは、SQL 2012がとにかく行うことです)

 SELECT CASE field WHEN '' THEN 'ONe action' ELSE 'Another' END
69
podiluska

IFFは、SQL Server 2012以降で使用できます。そのため、代わりに「ケース」を使用してください。

よりコンパクトなフォームを探している場合(大文字小文字ではなく関数)SQL Server 2008では、次を使用できます。

_isnull((select 'yes' where 2 > 1),'no')
_

の代わりに:

_SELECT IIF(2 > 1, 'yes','no')
_

あなたの声明は次のようになります:

SELECT isnull((select 'yes' where 2 > 1),'no')

27
Alexander

IIFSQL Server 2012で導入 であったため、SQL Server 2008またはSQL Server 2008 R2では機能しません。

11
Aaron Bertrand
DECLARE @a int=45

DECLARE @b int=40

SELECT   
      CASE 
         WHEN @A>@B THEN 'True'

 ELSE 'FALSE'         
      END

IIFの代わりにこのソリューションを使用できます。

2
user7870411