J'essaie d'utiliser IIF()
dans une instruction select. L'expression booléenne vérifie si une valeur de champs est égale à une chaîne vide. La syntaxe est la suivante:
SELECT IIF(field = '','ONe action','Another')
J'obtiens l'erreur "erreur de syntaxe près de ="
J'ai essayé un test simple:
SELECT IIF(2 > 1, 'yes','no')
et je reçois "syntax errror near >"
Cela me porte à croire que IIF
ne fonctionne pas du tout.
J'utilise SQL SERVER 2008 R2, y a-t-il quelque chose qui doit être configuré pour permettre à IIF () de fonctionner? Y a-t-il quelque chose dans la syntaxe qui me manque? Mon test est aussi simple que possible et j'obtiens toujours l'erreur de syntaxe.
Toute aide serait appréciée. Merci beaucoup!
Comme indiqué, IIF
est une fonctionnalité SQL2012.
Remplacez votre IIF
par un CASE
(ce que ferait de toute façon SQL 2012)
SELECT CASE field WHEN '' THEN 'ONe action' ELSE 'Another' END
IFF
est disponible à partir de SQL Server 2012. Utilisez donc plutôt 'Case'.
Si vous recherchez un formulaire plus compact (fonction au lieu de casse) dans SQL Server 2008, vous pouvez utiliser:
isnull((select 'yes' where 2 > 1),'no')
au lieu de:
SELECT IIF(2 > 1, 'yes','no')
Votre déclaration sera alors:
SELECT isnull((select 'yes' where 2 > 1),'no')
IIF
était introduit dans SQL Server 2012 , c'est pourquoi il ne fonctionne pas dans SQL Server 2008 ou SQL Server 2008 R2.
DECLARE @a int=45
DECLARE @b int=40
SELECT
CASE
WHEN @A>@B THEN 'True'
ELSE 'FALSE'
END
Vous pouvez utiliser cette solution au lieu de IIF
.