논리 함수 - IIF(Transact-SQL)

적용 대상:SQL ServerAzure SQL DatabaseAzure SQL Managed Instance

SQL Server에서 부울 식이 True인지 False인지에 따라 두 값 중 하나를 반환합니다.

Transact-SQL 구문 표기 규칙

Syntax

IIF( boolean_expression, true_value, false_value )

참고 항목

SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.

인수

boolean_expression

유효한 부울 식입니다.

이 인수가 부울 식이 아닌 경우 구문 오류가 발생합니다.

true_value

boolean_expression이 true로 평가되면 반환할 값입니다.

false_value

boolean_expression이 false로 평가되면 반환할 값입니다.

반환 형식

true_valuefalse_value 형식에서 우선 순위가 가장 높은 데이터 형식을 반환합니다. 자세한 내용은 데이터 형식 우선 순위(Transact-SQL)를 참조하세요.

설명

IIF는 CASE 문을 작성하는 약식 방법입니다. 첫 번째 인수로 전달되는 부울 식인 경우 평가 결과에 따라 나머지 두 인수 중 하나가 반환됩니다. 즉, 부울 식이 True이면 true_value가 반환되고, 부울 식이 False이거나 알 수 없으면 false_value가 반환됩니다. true_valuefalse_value는 모든 형식일 수 있습니다. 부울 식, null 처리 및 반환 형식에 대해 CASE 문에 적용되는 규칙이 IIF에도 적용됩니다. 자세한 내용은 CASE(Transact-SQL)를 참조하세요.

IIF가 CASE로 변환된다는 점은 이 함수의 다른 동작에도 영향을 줍니다. CASE 문은 최대 10개 수준만 중첩될 수 있으므로 IIF 문도 최대 10개 수준만 중첩될 수 있습니다. 또한 IIF는 원격 실행되는 CASE 문과 모든 동작이 같으므로 다른 서버에 대해 기능적으로 동일한 CASE 문으로 원격 실행됩니다.

IIF는 Azure Synapse Analytics의 전용 SQL 풀에서 지원되지 않습니다.

A. 간단한 IIF 예

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

결과 집합은 다음과 같습니다.

Result  
--------  
TRUE  

B. NULL 상수가 있는 IIF

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

이 문의 결과는 오류입니다.

C. NULL 매개 변수가 있는 IIF

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

결과 집합은 다음과 같습니다.

Result  
--------  
NULL  

다음 단계