Ответ 1
Как отмечено, IIF
- это функция SQL2012.
Замените IIF
на CASE
(что будет делать SQL 2012 в любом случае)
SELECT CASE field WHEN '' THEN 'ONe action' ELSE 'Another' END
Я пытаюсь использовать IIF()
в инструкции select. Булевое выражение проверяет, равна ли значение поля пустой строке. Синтаксис выглядит так:
SELECT IIF(field = '','ONe action','Another')
Я получаю ошибку "синтаксическая ошибка около ="
Я попробовал простой тест:
SELECT IIF(2 > 1, 'yes','no')
и я получаю "syntax errror near >"
Это заставляет меня думать, что IIF
вообще не работает.
Я использую SQL SERVER 2008 R2, есть ли что-то, что нужно настроить для работы IIF()? Есть ли что-то в синтаксисе, который мне не хватает? Мой тест прост, как может быть, и я все еще получаю синтаксическую ошибку.
Любая помощь будет оценена по достоинству. Большое спасибо!
Как отмечено, IIF
- это функция SQL2012.
Замените IIF
на CASE
(что будет делать SQL 2012 в любом случае)
SELECT CASE field WHEN '' THEN 'ONe action' ELSE 'Another' END
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')
IIF
был представлен в SQL Server 2012, поэтому он не работает в SQL Server 2008 или SQL Server 2008 R2.
DECLARE @a int=45
DECLARE @b int=40
SELECT
CASE
WHEN @A>@B THEN 'True'
ELSE 'FALSE'
END
Вы можете использовать это решение вместо IIF
.