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!
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
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')
IIF
war eingeführt in SQL Server 2012 , daher funktioniert es in SQL Server 2008 oder SQL Server 2008 R2 nicht.
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.