Microsoft SQL Server 2012 버전부터 IIF, CHOOSE 논리 함수가 추가되었습니다. IIF, CHOOSE 논리 함수를 사용하는 것이 CASE 문을 사용하는 것보다 좀 더 효율적인 경우가 있습니다. 쿼리문에 따라서 IIF, CHOOSE 논리 함수 또는 CASE 식을 사용하면 될 것 같습니다.

MSSQL IIF, CHOOSE 논리 함수 사용법 – CASE 식 비교

Microsoft SQL Server 2012 버전부터 IIF, CHOOSE 논리 함수가 추가되었습니다. IIF, CHOOSE 논리 함수를 사용하는 것이 CASE 문을 사용하는 것보다 좀 더 효율적인 경우가 있습니다. 쿼리문에 따라서 IIF, CHOOSE 논리 함수 또는 CASE 식을 사용하면 될 것 같습니다.

그럼 예제로 CASE 식을 비교하면서 IIF, CHOOSE 논리 함수 사용법에 대해서 알아보죠.

◎ 포스트 기준 – Microsoft SQL Server 2019, SSMS 18.11

1. IIF 논리 함수

1. 함수 구문 (마이크로소프트 문서)

▶ SQL Server에서 부울 식이 True인지 False인지에 따라 두 값 중 하나를 반환합니다.

IIF( boolean_expression, true_value, false_value )


2. 사용 예제 1)

▶ True인지 False 인지 두 값 중 하나만 반환이 필요할 때는 CASE 식 보다는 IIF 함수를 사용하는 게 조금 더 효율적입니다.

-- IIF 함수가 더 직관적
SELECT IIF(GENDER = '1', '남', '여') AS 'IIF',
       (CASE WHEN GENDER = '1' THEN '남' ELSE '여' END) AS 'CASE'
  FROM BS_DEMO_9
 WHERE P_ID < '1008'
사용 예제 1)


3.  사용 예제 2) 중첩 IIF

▶ 예제와 같이 중첩 IIF 함수를 사용하는 것보다는 CASE 식이 좀 더 직관적인 것 같습니다.

-- CASE 식이 더 직관적
SELECT IIF(GENDER = '1', '남', IIF(GENDER = '2', '여', '')) AS '중첩 IIF',
       (CASE GENDER WHEN '1' THEN '남' WHEN '2' THEN '여' ELSE '' END) AS 'CASE'
  FROM BS_DEMO_9
 WHERE P_ID < '1008'
사용 예제 2) 중첩 IIF


4. 사용 예제 3) 중첩 IIF

▶ 예제와 같이 중첩 IIF 함수를 사용하는 것보다는 CASE 식이 좀 더 직관적인 것 같습니다.

-- CASE 식이 더 직관적
SELECT IIF(SCORE >= 90, 'A+',
           IIF(SCORE >= 80 AND SCORE < 90, 'A',
              IIF(SCORE >= 70 AND SCORE < 80, 'B', 'F'))) AS '중첩 IIF',
       (CASE WHEN SCORE >= 90 THEN 'A+'
             WHEN SCORE >= 80 AND SCORE < 90 THEN 'A'
             WHEN SCORE >= 70 AND SCORE < 80 THEN 'B'
             ELSE 'F'
        END) AS 'CASE'
  FROM BS_DEMO_8_3
사용 예제 3) 중첩 IIF

2. CHOOSE 논리 함수

1. 함수 구문 (마이크로소프트 문서)

▶ SQL Server의 값 목록에서 지정된 인덱스에 있는 항목을 반환합니다.

CHOOSE ( index, val_1, val_2 [, val_n ] )


2.  사용 예제 1)

-- CHOOSE 논리 함수 사용법
SELECT CHOOSE(1, '첫번째', '두번째', '세번째') AS Result1,
       CHOOSE(2, '첫번째', '두번째', '세번째') AS Result2,
       CHOOSE(3, '첫번째', '두번째', '세번째') AS Result3,
       CHOOSE(4, '첫번째', '두번째', '세번째') AS Result4
사용 예제 1)


3.  사용 예제 2)

▶ 예제와 같은 경우는 CASE 식을 사용하는 것보다는 CHOOSE 함수를 사용하는 게 좀 더 직관적입니다.

-- CHOOSE 함수가 더 직관적
SELECT (CHOOSE (DATEPART(WEEKDAY, '2022-05-22'),
           '일', '월', '화', '수', '목', '금', '토')) AS 'CHOOSE',
       (CASE DATEPART(WEEKDAY, '2022-05-22') 
            WHEN 1 THEN '일' 
            WHEN 2 THEN '월' 
            WHEN 3 THEN '화' 
            WHEN 4 THEN '수' 
            WHEN 5 THEN '목' 
            WHEN 6 THEN '금' 
            WHEN 7 THEN '토' END) AS 'CASE'
CHOOSE 논리 함수 사용 예제


이 글이 도움이 되셨다면 공유를 부탁드립니다. 다음 글에서 뵙겠습니다!

위로 스크롤