Untitled_Blue

[SQL] DECODE와 CASE 조건문 본문

Database/SQL

[SQL] DECODE와 CASE 조건문

Untitled_Blue 2023. 5. 27. 18:54
반응형

안녕하세요. 이번 글은 DECODE와 CASE 조건문에 대한 설명입니다.

SQL 함수 시리즈의 마지막 글입니다.

- DECODE

DECODE 문은 어느 칼럼에 대해 조건에 따른 반환 결과를 다르게 하는 조건문 함수이다. 예를 들어 특정 조건의 값이 10이면 A를 반환하고 20이면 B를 반환하고 어느 조건에도 해당되지 않으면 NO를 반환하는 형식이라고 볼 수 있다.

상단 이미지는 DECODE와 if-else if문에 대한 비교 및 대조를 보여주고 있는데 서로 번갈아보면서 비교해보면 DECODE가 무엇인지 어느 경우에 사용하는지에 대해 이해할 수 있을 것이다.

select * from EMP;

select ENAME, JOB, HIREDATE, DEPTNO, 
              DECODE(DEPTNO,
              10, '영업부',
              20, '경영관리부',
              30, '기술지원팀',
              '전산부') from EMP;

다음 코드는 EMP 테이블에서 DECODE를 사용해서 DEPTNO를 기준으로 10이면 영업부, 20이면 경영관리부, 30이면 기술지원팀을 반환하고 어느 곳에도 해당되지 않는다면 전산부라고 반환해서 결과를 출력하라는 뜻을 가지고 있다. 해당 코드를 실행해보면 이미지처럼 DEPTNO에 따라 설정해둔 부서명이 정상적으로 반환 및 출력된 점을 확인할 수 있다. 

- CASE

CASE 조건문 함수는 칼럼에 대한 조건에 따라 반환 결과를 다르게 설정할 수 있는 함수이다.  프로그래밍 언어에서의 switch문과 작동 원리가 전체적으로 같다. 어느 조건에도 해당되지 않으면 반환할 결과를 ELSE 뒤에 적으며 CASE 함수의 사용을 마칠 때는 반드시 END를 입력해야 된다는 점이 특징이다.

select ENAME, JOB, HIREDATE, DEPTNO, 
              CASE DEPTNO
              WHEN 10 THEN '영업부'
              WHEN 20 THEN '경영관리부'
              WHEN 30 THEN '기술지원팀'
              ELSE '전산부'
              END as "부서명"
              from EMP;

다음 코드는 EMP 테이블에서 CASE 함수를 사용해서 DEPTNO에 대해 값이 10이면 영업부, 20이면 경영관리부, 30이면 기술지원팀을 반환하면서 어느 조건에도 해당되지 않는다면 전산부를 반환해서 출력하라는 뜻을 가지고 있다. 해당 코드를 실행해보면 설정한 조건에 맞게 부서명이 정상적으로 출력되었음을 확인할 수 있다.

 

해당 글을 끝으로 SQL에서 자주 사용되면서 대표적인 함수에 대한 글을 마치겠습니다.

다음 글은 DDL 문법에 대한 설명입니다.

반응형

'Database > SQL' 카테고리의 다른 글

[SQL] DML - INSERT, UPDATE, DELETE  (0) 2023.05.30
[SQL] DDL - CREATE, ALTER, DROP  (0) 2023.05.29
[SQL] 형 변환 함수  (0) 2023.05.27
[SQL] 날짜 함수  (0) 2023.05.26
[SQL] 문자 함수, 숫자 함수  (0) 2023.05.26