다음을 통해 공유


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

적용 대상: SQL Server Azure SQL Database Azure SQL Managed Instance Azure Synapse Analytics Analytics Platform System(PDW) Microsoft Fabric의 SQL 분석 엔드포인트 Microsoft Fabric의 웨어하우스

Transact-SQL 문을 실행하기 위한 조건을 설정합니다. boolean_expression 계산TRUE될 경우 boolean_expression 다음의 Transact-SQL 문(sql_statement)이 실행됩니다. 선택적 ELSE 키워드는 boolean_expression 평가할 FALSE실행되는 대체 Transact-SQL 문입니다NULL.

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. 모든 Transact-SQL 문은 블록 내에서 BEGIN...END 유효하지만 특정 Transact-SQL 문은 동일한 일괄 처리(문 블록) 내에서 함께 그룹화되어서는 안 됩니다.

반환 형식

Boolean

예제

이 문서의 Transact-SQL 코드 샘플은 AdventureWorks2022 또는 AdventureWorksDW2022 샘플 데이터베이스를 사용하며, 이는 Microsoft SQL Server 예시 및 커뮤니티 프로젝트(Microsoft SQL Server Samples and Community Projects) 홈 페이지에서 다운로드할 수 있습니다.

A. 부울 식 사용

다음 예제에는 true인 부울 식(1 = 1)이 있으므로 첫 번째 문을 인쇄합니다.

IF 1 = 1 PRINT 'Boolean expression is true.'
ELSE PRINT 'Boolean expression is false.';

다음 예제에는 false인 부울 식(1 = 2)이 있으므로 두 번째 문을 인쇄합니다.

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

B. 부울 식의 일부로 쿼리 사용

다음 예에서는 부울 식의 일부로 쿼리를 실행합니다. 테이블에 절의 Product 조건을 WHERE 충족하는 10개의 자전거가 있으므로 첫 번째 인쇄 문이 실행됩니다. 로 변경 > 5 하여 > 15문의 두 번째 부분을 실행할 수 있는 방법을 확인할 수 있습니다.

USE AdventureWorks2022;
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

C. 문 블록 사용

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

USE AdventureWorks2022;
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

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

다음 예제에서는 문을 다른 문 안에 중첩할 수 있는 방법을 IF...ELSE 보여줍니다. 변수5@Number , 50500,로 설정하여 각 문을 테스트합니다.

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

예: Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)

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

다음 예제에서는 데이터베이스에 있는 테이블에 AdventureWorksDW2012 있는 항목 DimProduct 의 가중치에 따라 사용자를 표시할 두 응답 중 어느 것을 결정하는 데 사용합니다IF...ELSE.

DECLARE @maxWeight FLOAT, @productKey INT;

SET @maxWeight = 100.00;
SET @productKey = 424;

IF @maxWeight <= (
    SELECT [Weight]
    FROM DimProduct
    WHERE ProductKey = @productKey;
)
BEGIN
    SELECT @productKey,
        EnglishDescription,
        [Weight],
        'This product is too heavy to ship and is only available for pickup.'
    FROM DimProduct
    WHERE ProductKey = @productKey;
END
ELSE
BEGIN
    SELECT @productKey,
        EnglishDescription,
        [Weight],
        'This product is available for shipping or pickup.'
    FROM DimProduct
    WHERE ProductKey = @productKey;
END