티스토리 뷰
오라클의 `DECODE` 함수는 조건에 따라 다른 값을 반환하는 함수입니다. `CASE` 표현식과 유사하게 동작하지만, 구문이 조금 더 간단합니다. 주로 특정 값에 대해 조건부로 다른 값을 반환하고자 할 때 사용됩니다.
`DECODE` 함수의 구문
DECODE(expression, search1, result1, [search2, result2, ...], default)
- `expression`: 평가할 값입니다.
- `search1`, `search2`, ...: `expression`과 비교할 값들입니다.
- `result1`, `result2`, ...: `expression`이 각각의 `search` 값과 일치할 때 반환할 값들입니다.
- `default`: `expression`이 어느 `search` 값과도 일치하지 않을 때 반환할 기본 값입니다. (생략 가능)
<예제>
1. 기본적인 사용 예제
직원 테이블에서 `job_id`에 따라 다른 직무 명칭을 반환하는 경우를 생각해 봅시다.
SELECT employee_id,
first_name,
last_name,
job_id,
DECODE(job_id,
'AD_PRES', 'President',
'AD_VP', 'Vice President',
'IT_PROG', 'Programmer',
'ST_CLERK', 'Stock Clerk',
'SA_REP', 'Sales Representative',
'Unknown Job') AS job_title
FROM employees;
여기서 `job_id`가 'AD_PRES'이면 'President'를, 'AD_VP'이면 'Vice President'를 반환합니다. 그 외의 경우에는 'Unknown Job'을 반환합니다.
2. 더 복잡한 사용 예제
예를 들어, 특정 급여 범위에 따라 다른 급여 등급을 반환하는 경우를 생각해봅시다.
SELECT employee_id,
first_name,
last_name,
salary,
DECODE(TRUE,
salary < 3000, 'Low',
salary BETWEEN 3000 AND 6000, 'Medium',
salary > 6000, 'High',
'Unknown') AS salary_grade
FROM employees;
이 예제에서는 급여가 3000 미만인 경우 'Low', 3000에서 6000 사이인 경우 'Medium', 6000 초과인 경우 'High'를 반환합니다. 어떤 조건에도 맞지 않으면 'Unknown'을 반환합니다.
3. `DECODE` 함수와 `CASE` 표현식 비교
`DECODE` 함수는 간단한 조건에 대해 간결한 구문을 제공하지만, 복잡한 논리 조건을 처리할 때는 `CASE` 표현식이 더 유연하고 강력할 수 있습니다. 예를 들어, `CASE` 표현식은 논리 연산자와 다양한 조건을 사용할 수 있습니다.
- `CASE` 표현식 예제
SELECT employee_id,
first_name,
last_name,
salary,
CASE
WHEN salary < 3000 THEN 'Low'
WHEN salary BETWEEN 3000 AND 6000 THEN 'Medium'
WHEN salary > 6000 THEN 'High'
ELSE 'Unknown'
END AS salary_grade
FROM employees;
이렇게 `DECODE` 함수는 단순한 조건부 논리를 구현하는 데 유용하며, 코드의 가독성을 높이는 데 도움이 됩니다. 그러나 복잡한 조건이 필요할 경우 `CASE` 표현식을 사용하는 것이 더 적절할 수 있습니다.
'SQL for business_기본' 카테고리의 다른 글
SQL_기본_쿼리문 작성 표준화 방법 (0) | 2024.06.29 |
---|---|
SQL_기본_CTE(공통테이블) 사용방법 (0) | 2024.06.29 |
SQL_기본_WHERE절 자주 사용하는 조건 (0) | 2024.06.27 |
SQL 기본_CASE WHEN 함수 (0) | 2024.06.26 |
SQL에서 자주 사용하는 연산함수 (0) | 2024.06.26 |