SelectステートメントでIIF()
を使用しようとしています。ブール式は、フィールド値が空の文字列と等しいかどうかを確認します。構文は次のとおりです。
SELECT IIF(field = '','ONe action','Another')
「構文エラー=近くの構文エラー」が表示されます
私は簡単なテストを試しました:
SELECT IIF(2 > 1, 'yes','no')
そして、私は"syntax errror near >"
これは、IIF
がまったく機能していないと思うようになります。
SQL SERVER 2008 R2を使用していますが、IIF()が機能するように構成する必要があるものはありますか?私が見逃している構文について何かありますか?私のテストはできる限り単純で、まだ構文エラーが発生します。
任意の助けをいただければ幸いです。どうもありがとう!
前述のとおり、IIF
はSQL2012の機能です。
IIF
をCASE
に置き換えます(これは、SQL 2012がとにかく行うことです)
SELECT CASE field WHEN '' THEN 'ONe action' ELSE 'Another' END
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')
IIF
は SQL Server 2012で導入 であったため、SQL Server 2008またはSQL Server 2008 R2では機能しません。
DECLARE @a int=45
DECLARE @b int=40
SELECT
CASE
WHEN @A>@B THEN 'True'
ELSE 'FALSE'
END
IIF
の代わりにこのソリューションを使用できます。