SQL Server
[MSSQL] IF 문
코딩하는 박줄기
2021. 6. 29. 15:54
728x90
반응형
IF...ELSE SQL 문을 실행하기 위한 조건을 설정합니다. 부울 식이 TRUE를 반환하는 경우 SQL 문이 실행됩니다.
ELSE 키워드는 선택적이며 IF 조건이 만족되지 않는 경우 실행될 대체 SQL 문을 동반합니다.
IF Boolean_expression
{ sql_statement | statement_block }
[ ELSE
{ sql_statement | statement_block } ]
-- Boolean_expression
TRUE 또는 FALSE를 반환하는 식입니다.
부울 식이 SELECT 문을 포함하는 경우에는 SELECT 문을 괄호로 묶어야 합니다.
-- { sql_statement| statement_block }
문 블록을 사용하지 않으면 IF나 ELSE 조건이 하나의 Transact-SQL 문 실행에만 영향을 줍니다.
문 블록을 정의하려면 흐름 제어 키워드인 BEGIN 및 END를 사용하세요.
사용법
A. IF... ELSE 사용
IF DATENAME(weekday, GETDATE()) IN ('토요일', '일요일')
SELECT '주말';
ELSE
SELECT '주중';
B. ELSE IF와 문 블록(BEGIN, END)을 사용
DECLARE @PersonID NVARCHAR(10) = 'jinwoopark',
DECLARE @Nation NVARCHAR(10) = '한국',
DECLARE @PersonName NVARCHAR(10),
DECLARE @CompanyID NVARCHAR(10),
DECLARE @CompanyAddr NVARCHAR(100)
--국가에 따라 다른 DB에서 조회
IF @Nation = '미국'
BEGIN
SELECT @PersonName = [NAME], @CompanyID = COMPANYID FROM US_DB..PERSON WHERE PersonId = @PersonID
SELECT @CompanyAddr = CompanyAddress FROM US_DB..COMPANY WHERE CompanyId = @CompanyID
END
ELSE IF @Nation = '중국'
BEGIN
SELECT @PersonName = [NAME], @CompanyID = COMPANYID FROM CH_DB..PERSON WHERE PersonId = @PersonID
SELECT @CompanyAddr = CompanyAddress FROM CH_DB..COMPANY WHERE CompanyId = @CompanyID
END
ELSE
BEGIN
SELECT @PersonName = [NAME], @CompanyID = COMPANYID FROM KR_DB..PERSON WHERE PersonId = @PersonID
SELECT @CompanyAddr = CompanyAddress FROM KR_DB..COMPANY WHERE CompanyId = @CompanyID
END
C. 부울 식 SELECT 포함한 괄호 사용
DECLARE @maxWeight FLOAT = 100.00,
DECLARE @productKey INTEGER = 424
IF @maxWeight <= (SELECT Weight from Product WHERE ProductKey = @productKey)
SELECT @productKey AS ProductKey, Weight, '이 제품은 배송이 너무 무거워 픽업만 가능합니다.' AS ShippingStatus
FROM Product WHERE ProductKey = @productKey
ELSE
SELECT @productKey AS ProductKey, Weight, '이 제품은 배송 또는 픽업이 가능합니다.' AS ShippingStatus
FROM Product WHERE ProductKey = @productKey
D. 부울 식 OR, AND 사용
E. 부울 식 IS NULL, IS NOT NULL 사용
참고
728x90
반응형