ELSE(IF...ELSE)(Transact-SQL)
적용 대상: Microsoft Fabric의 Microsoft FabricWarehouse에 있는 SQL ServerAzure SQL DatabaseAzure SQL Managed InstanceAzure Synapse AnalyticsPlatform System(PDW) SQL 분석 엔드포인트
Transact-SQL 문을 실행하기 위한 조건을 설정합니다. Boolean_expression이 TRUE로 평가되면 Transact-SQL 문(sql_statement) 다음의 Boolean_expression가 실행됩니다. 선택적인 ELSE 키워드는 Boolean_expression이 FALSE 또는 NULL로 평가될 때 실행되는 대체 Transact-SQL 문입니다.
Syntax
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
참고 항목
SQL Server 2014(12.x) 및 이전 버전에 대한 Transact-SQL 구문을 보려면 이전 버전 설명서를 참조 하세요.
인수
Boolean_expression
TRUE 또는 FALSE를 반환하는 식입니다. Boolean_expression이 SELECT 문을 포함하는 경우에는 SELECT 문을 괄호로 묶어야 합니다.
{ sql_statement | statement_block }
문 블록에 정의된 유효한 Transact-SQL 문이나 문 그룹입니다. 문 블록(일괄 처리)을 정의하려면 흐름 제어 언어 키워드인 BEGIN과 END를 사용합니다. BEGIN...END 블록 내의 모든 Transact-SQL 문이 유효해도 특정 Transact-SQL 문을 동일한 일괄 처리(문 블록) 내에 그룹화할 수 없습니다.
결과 형식
Boolean
예제
A. 간단한 부울 식 사용
다음 예에 포함된 간단한 부울 식(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
B. 쿼리를 부울 식의 일부로 사용
다음 예에서는 부울 식의 일부로 쿼리를 실행합니다. Product
테이블에는 WHERE
절을 충족하는 자전거 10대가 있으므로 첫째 print 문이 실행됩니다. 둘째 문이 실행되도록 하려면 > 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 문이 어떻게 다른 문에 중첩될 수 있는지를 보여 줍니다. @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
예: Azure Synapse Analytics 및 분석 플랫폼 시스템(PDW)
E. 쿼리를 부울 식의 일부로 사용
다음 예에서는 IF...ELSE
를 사용하여 DimProduct
테이블에 있는 항목의 가중치에 따라 두 응답 중 사용자를 표시할 응답을 결정합니다.
-- Uses AdventureWorks
DECLARE @maxWeight FLOAT, @productKey INTEGER
SET @maxWeight = 100.00
SET @productKey = 424
IF @maxWeight <= (SELECT Weight FROM DimProduct WHERE ProductKey=@productKey)
(SELECT @productKey, EnglishDescription, Weight, 'This product is too heavy to ship and is only available for pickup.' FROM DimProduct WHERE ProductKey=@productKey)
ELSE
(SELECT @productKey, EnglishDescription, Weight, 'This product is available for shipping or pickup.' FROM DimProduct WHERE ProductKey=@productKey)
참고 항목
ALTER TRIGGER(Transact-SQL)
흐름 제어 언어(Transact-SQL)
CREATE TRIGGER(Transact-SQL)
IF...ELSE(Transact-SQL)
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기