만들어가는 세상

[ORACLE] 오라클 표현식 CASE, WHEN, THEN 본문

IT/ETC

[ORACLE] 오라클 표현식 CASE, WHEN, THEN

윤재웅 2020. 3. 10. 13:19


[ORACLE] 오라클 표현식 CASE, WHE, THEN

  1. 구문형식

    CASE 대상값 when 비교값1 then 처리1
                when 비교값2 then 처리2
                ………
                else 디폴트처리
    END;
  2. 설명
    case는 함수가 아닌 표현식의 일종입니다. 표현식은 하나 혹은 그 이상의 값과 연산자, 함수가 조합된 것을 말하며 함수보다 범위가 더 넓습니다. 위에서 언급했듯이 decode보다 확장된 기능을 제공합니다.

특정 값에 조건에 따라 다르게 표현하기 위해 나타내는 식입니다. 비슷한 함수로는 DECODE 있습니디.
예) 90~100 점은 A, 80~90 은 B, 70~80 은 C 로 표현 하고 싶을때 DECODE를 써도되지만 복잡한 조건처리는 CASE 방식을 사용합니다.

SELECT ID, NAME, SCORE,
      CASE WHEN SCORE > 90 THEN 'A'
           WHEN SCORE > 80 AND SCORE < 90 THEN 'B'
           WHEN SCORE > 70 AND SCORE < 80 THEN 'C'
           ELSE 'D'
      END AS GRADE
FROM REPORT

DECODE에 대해서 알아봅니다.

  1. 구문형식
    Decode( expr, search1, result1, search2, result2, …… , default_result)

  2. 설명
    디코드 함수는 첫번째 파라미터로 들어오는 expr 표현식을 검사하여, 이 값이 search1에 해당할 경우 result1을 반환하고, search2에 해당하면 result2를 반환합니다.

  • default_result는 생략될 수 있고, 모든 search값을 만족하지 않을 경우 null을 반환하게 됩니다.
  • DECODE에 사용되는 식은 동등비교만 가능합니다. (true / false)
SELECT 컬럼, 컬럼
    DECODE(컬럼, 'Y', '예', '아니오') AS TEST
FROM DUAL

컬럼값이 'Y'이면 '예' 값을 출력하고, 아니면 '아니오'를 출력합니다. 저는 직관적인 편이라서 DECODE를 쓸때는 딱 저정도까지만 조건일 경우 사용합니다. 조건이 더 많을 경우 CASE, WHE, THEN 표현식을 사용합니다. 이해하기 쉽고 유지보수나 다른 사람이 해석하기 쉽다고 생각합니다.

Comments