상세 컨텐츠

본문 제목

[MSSQL] IF 문

SQL Server

by 코딩하는 박줄기 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
반응형

관련글 더보기

댓글 영역