web-dev-qa-db-fra.com

IIF (...) n'est pas une fonction intégrée reconnue

J'essaie d'utiliser cela dans Microsoft SQL Server 2008 R2:

SET @SomeVar = @SomeOtherVar +
  IIF(@SomeBool, 'value when true', 'value when false')

Mais je reçois une erreur:

IIF(...) n'est pas un nom de fonction intégré reconnu

IIF() est-il uniquement compatible avec une version ultérieure?

Existe-t-il une fonction alternative que je peux utiliser?

25
Danny Beckett

Comme d'autres l'ont dit, l'IIF vient de SQL 2012. Avant cela, vous pouvez utiliser CASE :

SET @SomeVar = @SomeOtherVar + CASE
 WHEN @SomeBool
 THEN 'value when true'
 ELSE 'value when false'
END
40
Richard

Quoi de neuf dans SQL Server 2012, améliorations de la programmabilité :

SQL Server 2012 présente 14 nouvelles fonctions intégrées. Ces fonctions facilitent le chemin de migration pour les travailleurs de l'information en émulant des fonctionnalités que l'on trouve dans les langages d'expression de nombreuses applications de bureau. Cependant, ces fonctions seront également utiles aux utilisateurs expérimentés de SQL Server.

...

8

Vous pouvez également utiliser l'instruction IF standard si elle se trouve en dehors d'une sélection.

Par exemple.

DECLARE @Answer VARCHAR(3) = 'YES'

IF @Answer = 'Yes'
BEGIN 
--Do Something if true
END
ELSE
-- Do Soemthing if false
4
Will Wainwright

IIF n'est pas valide pour SQL Server 2008 R2 et toute version antérieure.

IIF a été introduit dans SQL Server 2012 (il n'y a pas de lien vers les versions précédentes sur la page de documentation à laquelle j'ai lié).

4
Oded