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

Вывод SQL Server 2008 IIF не поддерживается

Я пытаюсь использовать IIF() в инструкции select. Булевое выражение проверяет, равна ли значение поля пустой строке. Синтаксис выглядит так:

SELECT IIF(field = '','ONe action','Another')

Я получаю ошибку "синтаксическая ошибка около ="

Я попробовал простой тест:

SELECT IIF(2 > 1, 'yes','no')

и я получаю "syntax errror near >"

Это заставляет меня думать, что IIF вообще не работает.

Я использую SQL SERVER 2008 R2, есть ли что-то, что нужно настроить для работы IIF()? Есть ли что-то в синтаксисе, который мне не хватает? Мой тест прост, как может быть, и я все еще получаю синтаксическую ошибку.

Любая помощь будет оценена по достоинству. Большое спасибо!

4b9b3361

Ответ 1

Как отмечено, IIF - это функция SQL2012.

Замените IIF на CASE (что будет делать SQL 2012 в любом случае)

 SELECT CASE field WHEN '' THEN 'ONe action' ELSE 'Another' END

Ответ 2

IFF доступен начиная с SQL Server 2012. Поэтому используйте "Case".

Если вы ищете более компактную форму (функция вместо случая) в SQL Server 2008, вы можете использовать:

isnull((select 'yes' where 2 > 1),'no')

вместо:

SELECT IIF(2 > 1, 'yes','no')

Тогда ваше утверждение будет:

SELECT isnull((select 'yes' where 2 > 1),'no')

Ответ 4

DECLARE @a int=45

DECLARE @b int=40

SELECT   
      CASE 
         WHEN @A>@B THEN 'True'

 ELSE 'FALSE'         
      END

Вы можете использовать это решение вместо IIF.