728x90
반응형
들어가기 전에
이 포스팅은 오라클로 배우는 데이터베이스 입문(이지훈 저)을 읽으면서 기억하고자 하는 내용 및 추가적으로 알아본 내용을 담았습니다. 책 전체 내용을 보시고 싶으신 분은 책을 구매하시어 읽어보시길 바랍니다.
오라클 함수
오라클 함수란, 특정한 결과 값을 얻기 위해 데이터를 입력할 수 있는 특수 명령어를 의미합니다. 오라클 함수는 함수를 제작한 주체를 기준으로 크게 2가지로 나뉩니다.
- 내장 함수(built-in function): 오라클에서 기본으로 제공하고 있는 함수
- 내장 함수는 입력 방식에 따라 데이터 처리에 사용하는 행이 나뉩니다.
- 단일행 함수(single-row function): 데이터가 한 행씩 입력되고, 입력된 각 행별로 결과가 하나씩 나오는 함수
- 다중행 함수(multiple-row function): 여러 행이 입력되어 하나의 행으로 결과가 반환되는 함수
- 사용자 정의 함수(user-defined function): 사용자가 필요에 의해 직접 정의한 함수
이번 시간에는 Oracle에서 제공하는 내장 함수 중 단일행 함수인DECODE 함수에 대해 알아보도록 하겠습니다. 이와 더불어 DECODE
함수와 비슷한 역할을 하는 CASE문
에 대해서도 알아보겠습니다.
DECODE
함수나CASE문
은 조건에 따라 다른 데이터를 반환하는 함수입니다. 프로그래밍 언어의 if 조건문이나 switch문과 비슷하다고 볼 수 있습니다.
DECODE 함수
DECODE([검사 대상이 될 열 또는 데이터, 연산이나 함수의 결과(필수)],
[조건1], [데이터가 조건1에 일치할 때 반환할 결과],
[조건2], [데이터가 조건2에 일치할 때 반환할 결과],
...
[조건n], [데이터가 조건n에 일치할 때 반환할 결과],
[위 조건 모두에 해당하지 않을 경우 반환할 결과 - 지정하지 않으면 NULL 반환])
- 만약, 조건들에 대해 모두 해당하지 않을 때 반환할 결과인 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문
은DECODE
함수와 달리 기준 데이터가 필수가 아닙니다(1번째, 3번째, 4번째 예시).CASE문
역시, 모든 조건에 부합하지 않는 경우에 대해 반환값을 설정하지 않으면NULL
을 반환합니다(3번째 예시).CASE문
은DECODE
함수와 달리 같음(=
) 비교 외에도 다른 조건을 걸 수 있습니다(4번째 예시).
CASE문과 DECODE 함수 비교
공통점 | 차이점 |
---|---|
조건에 따라 반환할 데이터를 설정할 때 사용합니다. | DECODE 함수는 기준 데이터가 필수이지만, CASE문은 기준 데이터가 존재하지 않아도 됩니다. 즉, CASE문의 각 조건은 서로 연관된 데이터를 바라보지 않아도 됩니다. DECODE 함수는 같음(=)으로만 조건을 체크할 수 있지만, CASE문은 같음(=) 외로 다양한 조건을 걸 수 있습니다. |
참고 자료
- 오라클로 배우는 데이터베이스 입문(이지훈 저)
728x90
반응형
'DB > Oracle' 카테고리의 다른 글
[Oracle] Oracle Function(오라클 함수) - GROUP BY절, HAVING절, 기타 그룹화 관련 함수 (0) | 2022.05.08 |
---|---|
[Oracle] Oracle Function(오라클 함수) - 다중행 함수(집계 함수) (0) | 2022.05.08 |
[Oracle] Oracle Function(오라클 함수) - NULL 처리 함수 (0) | 2022.05.07 |
[Oracle] Oracle Function(오라클 함수) - 형 변환 함수 (0) | 2022.05.07 |
[Oracle] Oracle Function(오라클 함수) - 날짜 함수 (0) | 2022.05.07 |