Поделиться через


Предложение IIF (Transact-SQL)

В SQL Server возвращает одно из двух значений в зависимости от того, принимает логическое выражение значение true или false.

Значок ссылки на раздел Синтаксические обозначения в Transact-SQL

Применимо для следующих объектов: SQL Server (SQL Server 2012 по текущую версию), База данных SQL Windows Azure (С первоначального выпуска по текущий выпуск).

Синтаксис

IIF ( boolean_expression, true_value, false_value )

Аргументы

  • boolean_expression
    Допустимое логическое выражение.

    Если этот аргумент не является логическим выражением, то возникает ошибка синтаксиса.

  • true_value
    Возвращаемое значение, если выражение boolean_expression истинно.

  • false_value
    Возвращаемое значение, если выражение boolean_expression ложно.

Типы возвращаемых данных

Возвращает тип данных с наивысшим приоритетом из типов, имеющихся в true_value и false_value. Дополнительные сведения см. в разделе Приоритет типов данных (Transact-SQL).

Замечания

IIF является быстрым способом написания выражения CASE. Оно вычисляет логическое выражение, переданное в качестве первого аргумента, а затем, исходя из результата вычисления, возвращает один из двух других аргументов. Другими словами, если логическое выражение имеет значение true, то возвращается true_value, если же логическое выражение имеет значение false или неизвестно, то возвращается false_value. Значения true_value и false_value могут быть любого типа. Эти же правила применяются к выражению CASE для логических выражений, обработки значения NULL, а возвращаемые типы также применяются к IIF. Дополнительные сведения см. в разделе Выражение CASE (Transact-SQL).

Тот факт, что IIF переводится в CASE, также оказывает влияние на другие аспекты работы этой функции. Поскольку выражения CASE могут быть вложенными только до уровня 10, инструкции IIF также могут быть вложенными максимум до уровня 10. Кроме того, выполнение IIF переносится на другие серверы как семантически равное выражение CASE, при этом для нее характерно все поведение выполняемого удаленно выражения CASE.

Примеры

А.Пример простой инструкции IIF

DECLARE @a int = 45, @b int = 40;
SELECT IIF ( @a > @b, 'TRUE', 'FALSE' ) AS Result;

Ниже приводится результирующий набор.

Result
--------
TRUE

(1 row(s) affected)

Б.Инструкция IIF с константами NULL

SELECT IIF ( 45 > 30, NULL, NULL ) AS Result;

Результатом выполнения этой инструкции будет ошибка.

В.Инструкция IIF с параметрами NULL

DECLARE @P INT = NULL, @S INT = NULL;
SELECT IIF ( 45 > 30, @p, @s ) AS Result;

Ниже приводится результирующий набор.

Result
--------
NULL

(1 row(s) affected)

См. также

Справочник

Выражение CASE (Transact-SQL)

CHOOSE (Transact-SQL)