DB/Oracle

[Oracle] Oracle Function(오라클 함수) - DECODE 함수와 CASE문

EARTH_ROOPRETELCHAM 2022. 5. 8. 00:10
728x90
반응형

들어가기 전에

이 포스팅은 오라클로 배우는 데이터베이스 입문(이지훈 저)을 읽으면서 기억하고자 하는 내용 및 추가적으로 알아본 내용을 담았습니다. 책 전체 내용을 보시고 싶으신 분은 책을 구매하시어 읽어보시길 바랍니다.

오라클 함수

오라클 함수란, 특정한 결과 값을 얻기 위해 데이터를 입력할 수 있는 특수 명령어를 의미합니다. 오라클 함수는 함수를 제작한 주체를 기준으로 크게 2가지로 나뉩니다.

  • 내장 함수(built-in function): 오라클에서 기본으로 제공하고 있는 함수
    • 내장 함수는 입력 방식에 따라 데이터 처리에 사용하는 행이 나뉩니다.
    • 단일행 함수(single-row function): 데이터가 한 행씩 입력되고, 입력된 각 행별로 결과가 하나씩 나오는 함수
    • 다중행 함수(multiple-row function): 여러 행이 입력되어 하나의 행으로 결과가 반환되는 함수
  • 사용자 정의 함수(user-defined function): 사용자가 필요에 의해 직접 정의한 함수

단일행 함수와 다중행 함수(오라클로 배우는 데이터베이스 입문, 129p)

이번 시간에는 Oracle에서 제공하는 내장 함수 중 단일행 함수인DECODE 함수에 대해 알아보도록 하겠습니다. 이와 더불어 DECODE 함수와 비슷한 역할을 하는 CASE문에 대해서도 알아보겠습니다.

  • DECODE 함수나 CASE문은 조건에 따라 다른 데이터를 반환하는 함수입니다. 프로그래밍 언어의 if 조건문이나 switch문과 비슷하다고 볼 수 있습니다.

DECODE 함수

DECODE([검사 대상이 될 열 또는 데이터, 연산이나 함수의 결과(필수)],
       [조건1], [데이터가 조건1에 일치할 때 반환할 결과],
       [조건2], [데이터가 조건2에 일치할 때 반환할 결과],
       ...
       [조건n], [데이터가 조건n에 일치할 때 반환할 결과],
       [위 조건 모두에 해당하지 않을 경우 반환할 결과 - 지정하지 않으면 NULL 반환])

DECODE 함수 사용 예시

  • 만약, 조건들에 대해 모두 해당하지 않을 때 반환할 결과인 default 결과를 작성하지 않으면 NULL이 반환됩니다.

CASE문

CASE [검사 대상이 될 열 또는 데이터, 연산이나 함수의 결과(선택)]
      WHEN [조건1] THEN [조건1의 결과 값이 true일 때 반환할 결과]
      WHEN [조건2] THEN [조건2의 결과 값이 true일 때 반환할 결과]
      ...
      WHEN [조건n] THEN [조건n의 결과 값이 true일 때 반환할 결과]
      ELSE [위 조건 모두에 해당하지 않을 경우 반환할 결과 - 지정하지 않으면 NULL 반환]
END

CASE문은 DECODE 함수와 마찬가지로 조건에 따라 반환할 데이터를 설정할 때 사용합니다.

CASE문 사용 예시

  • CASE문DECODE 함수와 달리 기준 데이터가 필수가 아닙니다(1번째, 3번째, 4번째 예시).
  • CASE문 역시, 모든 조건에 부합하지 않는 경우에 대해 반환값을 설정하지 않으면 NULL을 반환합니다(3번째 예시).
  • CASE문DECODE 함수와 달리 같음(=) 비교 외에도 다른 조건을 걸 수 있습니다(4번째 예시).

CASE문과 DECODE 함수 비교

공통점 차이점
조건에 따라 반환할 데이터를 설정할 때 사용합니다. DECODE 함수는 기준 데이터가 필수이지만, CASE문은 기준 데이터가 존재하지 않아도 됩니다. 즉, CASE문의 각 조건은 서로 연관된 데이터를 바라보지 않아도 됩니다. DECODE 함수는 같음(=)으로만 조건을 체크할 수 있지만, CASE문은 같음(=) 외로 다양한 조건을 걸 수 있습니다.

참고 자료

  • 오라클로 배우는 데이터베이스 입문(이지훈 저)
728x90
반응형