ELSE(IF...ELSE)(Transact-SQL)

Transact-SQL 문을 실행하기 위한 조건을 설정합니다. Boolean_expression이 TRUE로 평가되면 Boolean_expression 뒤에 오는 Transact-SQL 문(sql_statement)이 실행됩니다. 선택적인 ELSE 키워드는 Boolean_expression이 FALSE 또는 NULL로 평가될 때 실행되는 대체 Transact-SQL 문입니다.

항목 링크 아이콘 Transact-SQL 구문 표기 규칙

구문

IF Boolean_expression { sql_statement | statement_block } 
    [ ELSE { sql_statement | statement_block } ] 

인수

  • Boolean_expression
    TRUE 또는 FALSE를 반환하는 식입니다. Boolean_expression이 SELECT 문을 포함하는 경우에는 SELECT 문을 괄호로 묶어야 합니다.

  • { sql_statement | statement_block }
    문 블록에 정의된 유효한 Transact-SQL 문이나 문 그룹입니다. 문 블록(일괄 처리)을 정의하려면 흐름 제어 언어 키워드인 BEGIN과 END를 사용합니다. BEGIN...END 블록 내의 모든 Transact-SQL 문이 유효해도 특정 Transact-SQL 문을 동일한 일괄 처리(문 블록) 내에서 그룹화할 수 없습니다.

결과 형식

Boolean

1.간단한 부울 식 사용

다음 예에 포함된 간단한 부울 식(1=1)의 결과는 true이므로 첫째 문이 출력됩니다.

IF 1 = 1 PRINT 'Boolean_expression is true.'
ELSE PRINT 'Boolean_expression is false.' ;

다음 예에 포함된 간단한 부울 식(1=2)의 결과는 false이므로 둘째 문이 출력됩니다.

IF 1 = 2 PRINT 'Boolean_expression is true.'
ELSE PRINT 'Boolean_expression is false.' ;
GO

2.쿼리를 부울 식의 일부로 사용

다음 예에서는 부울 식의 일부로 쿼리를 실행합니다. Product 테이블에는 WHERE 절을 충족하는 자전거 10대가 있으므로 첫째 print 문이 실행됩니다. 둘째 문이 실행되도록 하려면 > 5를 > 15로 변경합니다.

USE AdventureWorks2012;
GO
IF 
(SELECT COUNT(*) FROM Production.Product WHERE Name LIKE 'Touring-3000%' ) > 5
PRINT 'There are more than 5 Touring-3000 bicycles.'
ELSE PRINT 'There are 5 or less Touring-3000 bicycles.' ;
GO

3.문 블록 사용

다음 예에서는 부울 식의 일부로 쿼리를 실행한 후 부울 식의 결과를 기반으로 약간 다른 문 블록을 실행합니다. 각 문 블록은 BEGIN으로 시작하여 END로 끝납니다.

USE AdventureWorks2012;
GO
DECLARE @AvgWeight decimal(8,2), @BikeCount int
IF 
(SELECT COUNT(*) FROM Production.Product WHERE Name LIKE 'Touring-3000%' ) > 5
BEGIN
   SET @BikeCount = 
        (SELECT COUNT(*) 
         FROM Production.Product 
         WHERE Name LIKE 'Touring-3000%');
   SET @AvgWeight = 
        (SELECT AVG(Weight) 
         FROM Production.Product 
         WHERE Name LIKE 'Touring-3000%');
   PRINT 'There are ' + CAST(@BikeCount AS varchar(3)) + ' Touring-3000 bikes.'
   PRINT 'The average weight of the top 5 Touring-3000 bikes is ' + CAST(@AvgWeight AS varchar(8)) + '.';
END
ELSE 
BEGIN
SET @AvgWeight = 
        (SELECT AVG(Weight)
         FROM Production.Product 
         WHERE Name LIKE 'Touring-3000%' );
   PRINT 'Average weight of the Touring-3000 bikes is ' + CAST(@AvgWeight AS varchar(8)) + '.' ;
END ;
GO

4.중첩된 IF...ELSE 문 사용

다음 예에서는 여러 IF ELSE 문을 중첩하여 사용하는 방법을 보여 줍니다. @Number 변수를 5, 50 및 500으로 설정하여 각 문을 테스트해 보십시오.

DECLARE @Number int;
SET @Number = 50;
IF @Number > 100
   PRINT 'The number is large.';
ELSE 
   BEGIN
      IF @Number < 10
      PRINT 'The number is small.';
   ELSE
      PRINT 'The number is medium.';
   END ;
GO

참고 항목

참조

ALTER TRIGGER(Transact-SQL)

흐름 제어 언어(Transact-SQL)

CREATE TRIGGER(Transact-SQL)

IF...ELSE(Transact-SQL)