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

J'essaie de l'utiliser 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

Est IIF() uniquement compatible avec une version ultérieure?

Y a-t-il une autre fonction que je peux utiliser?

25
demandé sur Danny Beckett 2012-08-20 13:18:51

4 réponses

Comme d'autres l'ont dit, 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
41
répondu Richard 2013-04-23 23:13:16

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

SQL Server 2012 introduit 14 nouvelles fonctions intégrées. Ces fonctions facilitent le chemin de migration pour les travailleurs de l'information en émulant des fonctionnalités qui se trouvent 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
répondu Damien_The_Unbeliever 2012-08-20 09:26:54

IIF est Pas valide pour SQL Server 2008 R2 et toute version antérieure à cela.

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
répondu Oded 2012-08-20 09:25:12

Vous pouvez également utiliser l'instruction standard IF si elle est en dehors d'un select.

Par exemple

DECLARE @Answer VARCHAR(3) = 'YES'

IF @Answer = 'Yes'
BEGIN 
--Do Something if true
END
ELSE
-- Do Soemthing if false
4
répondu Will Wainwright 2013-12-23 05:09:15