Database/ORACLE

[ORACLE 이론] DECODE / CASE

오류나면꽥꽥 2025. 1. 15. 14:10

1) 조건에 따라 다른 값을 반환하는 데 사용되는 함수

2) DECODE는 CASE 구문과 유사한 기능

3) DECODE는 Oracle에서 제공하는 고유한 함수

 

 

 

✅ DECODE

 

📌 장점

  • 간단한 조건에 따른 값 변환을 처리할 수 있습니다.
  • CASE 문에 비해 구문이 간단하고 직관적일 수 있습니다.

📌 단점

  • 복잡한 조건이나 여러 조건을 처리할 때 CASE 구문보다 가독성이 떨어질 수 있습니다.
  • DECODE는 Oracle에 특화된 함수이므로 다른 데이터베이스 시스템에서는 사용할 수 없습니다.
  • SQL 표준을 준수하려면 CASE 구문을 사용하는 것이 더 좋습니다.
DECODE(컬럼명, 비교값1, 반환값1, 비교값2, 반환값2, ..., 기본값)

 

 

 

ex)

1️⃣ 특정 값에 따라 다른 값을 반환하는 경우

SELECT employee_id, department_id,
       DECODE(department_id, 10, 'HR', 20, 'IT', 30, 'Sales', 'Other') AS department_name
FROM employees;

 

department_id가 10이면 'HR', 20이면 'IT', 30이면 'Sales'를 반환하고, 그 외의 값은 'Other'를 반환

 

 

 

 

 

2️⃣ 단순 비교 예시

SELECT employee_id, salary,
       DECODE(
           WHEN salary < 3000 THEN 'Low'
           WHEN salary BETWEEN 3000 AND 5000 THEN 'Medium'
           ELSE 'High'
       ) AS salary_category
FROM employees;

 

 

 

 

 

3️⃣ DECODE를 UPDATE와 함께 사용

UPDATE employees
SET salary = DECODE(
                WHEN salary < 3000 THEN 4000,
                WHEN salary BETWEEN 3000 AND 5000 THEN 4500,
                ELSE 5000
            );

 

 

 

 

 

 

✅ CASE

 

DECODE는 비교적 간단한 조건에 따른 값을 반환할 때 유용하며,

여러 조건을 처리해야 할 경우 CASE 구문을 사용하는 것이 더 효율적

 

ex)

SELECT employee_id, department_id,
       CASE
           WHEN department_id = 10 THEN 'HR'
           WHEN department_id = 20 THEN 'IT'
           WHEN department_id = 30 THEN 'Sales'
           ELSE 'Other'
       END AS department_name
FROM employees;