Оператор IIF в SQL Server 2005

Существует ли оператор IIF во всех версиях SQL Server?

Я проверил руководство по MSDN.

Но когда я попытался запустить этот код на своей машине

DECLARE @newDate datetime
SET @newDate =  CONVERT(varchar, {fn NOW()}, 111)
SELECT IIF(@newDate > '2010/12/2', 'Greater', 'smaller')

Но я получаю сообщение об ошибке «Неверный синтаксис рядом с '>'».

Может ли кто-нибудь предоставить мне пример в SQL Server 2005 для существования инструкции IIF?


person Zerotoinfinity    schedule 07.12.2010    source источник


Ответы (3)


Этот оператор IIF существует только в MDX — языке запросов для SQL Server Analysis Services — стороне хранилища данных SQL Server.

В простом T-SQL нет оператора IIF.

Лучшее, что вы можете сделать в T-SQL, это использовать оператор CASE.... WHEN... THEN....

person marc_s    schedule 07.12.2010
comment
ОБНОВЛЕНИЕ: SQL Server 2012 теперь имеет оператор IIF. msdn.microsoft.com/en-us/library/hh213574.aspx - person unhappyCrackers1; 13.06.2012
comment
@Somantra: правда, но в декабре 2010 года об этом не было известно, и ОП спрашивал о SQL Server 2005. - person marc_s; 13.06.2012
comment
В заголовке написано 2005 год, но его первый вопрос был задан. Существует ли оператор IIF во всех версиях SQL Server?. Надеюсь, кто-то найдет что-то полезное в этом посте в будущем. ;-) - person unhappyCrackers1; 13.06.2012

Лучше использовать выражение CASE:

DECLARE @newDate datetime
SET @newDate =  CONVERT(varchar, {fn NOW()}, 111)
SELECT CASE WHEN @newDate > '20101202' THEN 'Greater' ELSE 'smaller' END

Также обратите внимание, что я изменил ваш литерал даты на безопасный формат — «2010/12/2» может быть интерпретирован SQL-сервером как 12 февраля или 2 декабря.

person Damien_The_Unbeliever    schedule 07.12.2010

person    schedule
comment
Это просто мусорный пост. - person nalply; 19.02.2014
comment
Соглашаться. Это не то, что спрашивали, и совершенно другой синтаксис для SQL Server. - person Fandango68; 08.07.2014