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
.
구문
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
, 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
예: 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