Логические функции — IIF (Transact-SQL)

Область применения: SQL Server База данных SQL Azure Управляемый экземпляр SQL Azure

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

Соглашения о синтаксисе Transact-SQL

Синтаксис

IIF( boolean_expression, true_value, false_value )

Аргументы

boolean_expression

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

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

true_value

Возвращаемое значение, если boolean_expression имеет значение true.

false_value

Возвращаемое значение, если boolean_expression имеет значение false.

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

Возвращает тип данных с наивысшим приоритетом из типов, имеющихся в 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 не поддерживается в выделенных пулах SQL в Azure Synapse Analytics.

Примеры

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

DECLARE @a INT = 45, @b INT = 40;
SELECT [Result] = IIF( @a > @b, 'TRUE', 'FALSE' );

Вот результирующий набор.

Result  
--------  
TRUE  

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

SELECT [Result] = IIF( 45 > 30, NULL, NULL );

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

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

DECLARE @P INT = NULL, @S INT = NULL;  
SELECT [Result] = IIF( 45 > 30, @P, @S );

Вот результирующий набор.

Result  
--------  
NULL  

Следующие шаги