728x90
반응형
SMALL
🌟 Oracle에서 WHERE CASE WHEN 사용법
WHERE
절에서 CASE WHEN
은 조건에 따라 WHERE 필터링을 동적으로 적용할 때 사용됩니다. 다만, CASE
는 SQL의 조건문처럼 보이지만 실제로는 값을 반환하는 표현식입니다. 즉, WHERE
절에서 특정 조건의 결과를 비교하거나 조건식 안에 CASE
를 삽입하는 방식으로 동작합니다.
📋 CASE 구문의 기본 구조
CASE
WHEN 조건1 THEN 반환값1
WHEN 조건2 THEN 반환값2
ELSE 기본값
END
WHERE 절에서 사용되는 형식
SELECT *
FROM 테이블명
WHERE 컬럼명 = CASE
WHEN 조건1 THEN 값1
WHEN 조건2 THEN 값2
ELSE 기본값
END;
🌟 실전 예제: Oracle에서의 사용법
1️⃣ 간단한 WHERE 절 필터링
다음은 직원 데이터를 필터링하는 예제입니다.
SELECT *
FROM employees
WHERE department_id = CASE
WHEN job_id = 'IT_PROG' THEN 60
WHEN job_id = 'ST_CLERK' THEN 50
ELSE 0
END;
job_id
가IT_PROG
라면department_id = 60
을 필터링.job_id
가ST_CLERK
라면department_id = 50
을 필터링.- 그 외의 경우
0
이 반환되어 필터링되지 않음.
2️⃣ 복잡한 조건: AND
와 OR
활용
CASE
는 여러 조건을 조합할 때 유용합니다.
SELECT *
FROM employees
WHERE
CASE
WHEN department_id = 60 THEN salary > 10000
WHEN department_id = 50 THEN salary > 5000
ELSE 0
END = 1;
- 부서 60은 급여가 10,000 이상인 직원만 반환.
- 부서 50은 급여가 5,000 이상인 직원만 반환.
3️⃣ 다른 필터링 조건과 결합
IN
과 함께 사용할 수도 있습니다.
SELECT *
FROM employees
WHERE employee_id IN (
CASE
WHEN department_id = 60 THEN (101, 102, 103)
WHEN department_id = 50 THEN (201, 202, 203)
ELSE NULL
END
);
🌟 다른 데이터베이스와의 차이점
📌 1. Oracle과 MySQL
- Oracle:
WHERE
절에서CASE
사용 가능. 복잡한 필터링에도 적합. - MySQL: CASE는 값을 반환하는 표현식으로 사용되지만, 일부 복잡한 조건 필터링에서는 지원이 제한적.MySQL은
CASE
구문 대신IF()
함수를 사용하는 경우도 많음.- 예:
SELECT * FROM employees WHERE IF(department_id = 60, salary > 10000, salary > 5000);
📌 2. Oracle과 PostgreSQL
- Oracle:
CASE
사용 시 유연하지만, 기본적으로 조건의 반환값을 필터링으로 처리. - PostgreSQL
-
SELECT SUM(salary) FROM employees FILTER (WHERE department_id = 60);
-
- : Oracle과 비슷한 방식으로 작동하며 CASE 활용이 자유로움. 하지만 FILTER 절과 조합해 더 세밀한 조건 처리가 가능.PostgreSQL은 FILTER 절로 조건을 구체화할 수 있음.
📌 3. Oracle과 SQL Server
- Oracle: WHERE 절에서
CASE
를 자유롭게 사용 가능. - SQL Server: CASE 를 사용해 복잡한 필터링 처리 가능. 하지만 성능 최적화가 더 중요하며, IF
- 예:
SELECT * FROM employees WHERE IIF(department_id = 60, salary > 10000, salary > 5000);
- 나 IIF() 구문과 함께 쓰이는 경우도 있음.
🌟 Oracle의 장점과 제한
✅ 장점
CASE
를 활용한 복잡한 조건 처리 가능.- 값 반환 및 조건 필터링 모두 수행 가능.
- 다른 DB와 비교해 유연한 활용 가능.
❌ 제한
- 복잡한 논리를 처리할 때 성능 저하 가능성.
- 특정 상황에서
CASE
대신OR
,AND
를 사용하는 것이 가독성과 성능에 유리.
🌈 초보자에게 응원 한마디 😊
처음에는 CASE WHEN
구문이 어렵게 느껴질 수 있지만, 차근차근 조건을 나누다 보면 금방 익숙해질 거예요! SQL은 실습이 중요하니, 다양한 예제를 따라 해보세요. 한 걸음씩 배워가는 여러분을 응원합니다! 🎉
728x90
반응형
SMALL
'데이터베이스 > ORACLE' 카테고리의 다른 글
오라클 데이터 타입 총정리: 초보자를 위한 쉬운 가이드 (0) | 2024.12.20 |
---|---|
Oracle 트랜잭션 관리 쉽게 이해하기: START TRANSACTION, COMMIT, ROLLBACK 활용법 (0) | 2024.12.20 |
Oracle PRIMARY KEY, FOREIGN KEY, DEFAULT 완벽 가이드 🌟 (0) | 2024.12.20 |
Oracle SQL 집계 함수 완벽 가이드: COUNT부터 LISTAGG까지! (0) | 2024.12.20 |
Oracle ON DELETE CASCADE와 SET NULL: 외래 키 옵션 완벽 가이드 (0) | 2024.12.20 |