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

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

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

Topic link iconСинтаксические обозначения в Transact-SQL

Синтаксис

IIF( boolean_expression, true_value, false_value )

Примечание

Ссылки на описание синтаксиса Transact-SQL для SQL Server 2014 и более ранних версий, см. в статье Документация по предыдущим версиям.

Аргументы

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.

Примеры

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

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

Результирующий набор:

Result  
--------  
TRUE  

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

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

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

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

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

Результирующий набор:

Result  
--------  
NULL  

Дальнейшие действия