it-swarm.com.de

Die SQL Server 2008 IIF-Anweisung scheint nicht aktiviert zu sein

Ich versuche, IIF() in einer select-Anweisung zu verwenden. Der boolesche Ausdruck überprüft, ob ein Feldwert einer leeren Zeichenfolge entspricht. Die Syntax ist wie folgt:

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

Ich erhalte den Fehler "syntax error near ="

Ich habe einen einfachen Test versucht:

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

und ich bekomme "syntax errror near >"

Dies lässt mich glauben, dass IIF überhaupt nicht funktioniert.

Ich verwende SQL Server 2008 R2. Muss etwas konfiguriert werden, damit IIF () funktioniert? Gibt es etwas an der Syntax, das mir fehlt? Mein Test ist so einfach wie möglich und ich erhalte immer noch den Syntaxfehler.

Jede Hilfe wäre dankbar. Vielen Dank!

35
TheMethod

Wie bereits erwähnt, ist IIF eine SQL2012-Funktion.

Ersetzen Sie Ihr IIF durch ein CASE (was SQL 2012 sowieso tun würde)

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

IFF ist ab SQL Server 2012 verfügbar. Verwenden Sie stattdessen 'Case'.

Wenn Sie nach einer kompakteren Form suchen (Funktion statt Groß-/Kleinschreibung) in SQL Server 2008 können Sie Folgendes verwenden:

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

anstatt von:

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

Dann lautet Ihre Aussage:

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

27
Alexander

IIF war eingeführt in SQL Server 2012 , daher funktioniert es in SQL Server 2008 oder SQL Server 2008 R2 nicht.

11
Aaron Bertrand
DECLARE @a int=45

DECLARE @b int=40

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

 ELSE 'FALSE'         
      END

Sie können diese Lösung anstelle von IIF verwenden.

2
user7870411