Подтвердить что ты не робот

IIF (...) не признанная встроенная функция

Я пытаюсь использовать это в Microsoft SQL Server 2008 R2:

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

Но я получаю сообщение об ошибке:

IIF(...) не является признанным встроенным именем функции

Является IIF() совместимым только с более поздней версией?

Есть ли альтернативная функция, которую я могу использовать?

4b9b3361

Ответ 1

Как говорили другие, IIF поставляется с SQL 2012. До этого вы можете использовать CASE:

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

Ответ 2

Что нового в SQL Server 2012, Улучшения в программировании:

SQL Server 2012 представляет 14 новых встроенных функций. Эти функции облегчают путь миграции для информационных работников, эмулируя функциональность, которая находится на языках выражений многих настольных приложений. Однако эти функции также будут полезны опытным пользователям SQL Server.

...

Ответ 3

IIF не, действительный для SQL Server 2008 R2 и любой версии до этого.

IIF был представлен в SQL Server 2012 (ссылка на предыдущие версии отсутствует на странице документации, к которой я привязался).

Ответ 4

Вы также можете использовать стандартную инструкцию IF, если она вне выбора.

например.

DECLARE @Answer VARCHAR(3) = 'YES'

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