300x250
SQL에서 DECODE 함수는 조건에 따라 값을 변환하는 함수입니다.
이 함수는 기본적으로 값을 비교하여 조건에 맞는 값을 반환하는 방식으로 동작하며, 특정 DBMS(예: Oracle)에서 주로 사용됩니다.
DECODE 함수는 아래와 같은 형식을 따릅니다.
DECODE 함수 기본 구문:
DECODE(expression, search1, result1, search2, result2, ..., default_result)
- expression: 비교할 값.
- search1, search2, ...: 비교할 대상 값.
- result1, result2, ...: 각 search 값과 expression이 일치할 때 반환할 결과.
- default_result: expression과 일치하는 값이 없을 때 반환할 기본 값 (생략 가능).
사용 예시:
- 단순한 변환 예를 들어, 숫자 등급에 따라 등급명을 변환한다고 가정해봅시다.
SELECT
employee_id,
DECODE(grade, 1, 'Beginner', 2, 'Intermediate', 3, 'Advanced', 'Unknown') AS grade_name
FROM employees;
- grade 값이 1이면 'Beginner', 2이면 'Intermediate', 3이면 'Advanced'가 반환됩니다.
- grade 값이 1, 2, 3이 아니면 'Unknown'이 반환됩니다.
2. 여러 조건 처리 DECODE 함수는 여러 조건을 처리할 수 있습니다.
예를 들어, 제품 상태에 따라 다른 메시지를 반환할 수 있습니다.
SELECT
product_id,
DECODE(status, 'A', 'Available', 'O', 'Out of stock', 'D', 'Discontinued', 'Unknown') AS status_desc
FROM products;
- status 값이 'A'이면 'Available', 'O'이면 'Out of stock', 'D'이면 'Discontinued'가 반환됩니다.
- 다른 값이 들어오면 'Unknown'이 반환됩니다.
3. 숫자 비교 DECODE를 사용하여 숫자를 비교할 수 있습니다.
예를 들어, 점수에 따라 성적을 변환할 때 사용할 수 있습니다.
SELECT
student_id,
DECODE(score, 90, 'A', 80, 'B', 70, 'C', 60, 'D', 'F') AS grade
FROM students;
- score가 90이면 'A', 80이면 'B', 70이면 'C', 60이면 'D', 그 외에는 'F'가 반환됩니다.
CASE 구문과 비교:
DECODE 함수는 매우 유용하지만, SQL 표준 함수는 아니며 주로 Oracle에서 많이 사용됩니다. CASE 구문은 SQL 표준이며 더 유연합니다. 예를 들어, 같은 기능을 CASE로 구현하면:
SELECT
employee_id,
CASE WHEN grade = 1 THEN 'Beginner'
WHEN grade = 2 THEN 'Intermediate'
WHEN grade = 3 THEN 'Advanced'
ELSE 'Unknown' END AS grade_name
FROM employees;
DECODE와 CASE는 같은 기능을 제공하지만, CASE는 보다 복잡한 논리 조건도 처리할 수 있다는 점에서 더 강력합니다.
300x250
'IT > DB' 카테고리의 다른 글
데이터베이스 with 쿼리 CTE 쿼리 사용하는 방법 (0) | 2024.11.11 |
---|---|
SET GLOBAL WAIT_TIMEOUT 시간 설정 (0) | 2024.11.07 |
데이터베이스 SQL 조건절 where 1=1 뜻 (0) | 2024.11.05 |
데이터베이스 SQL 서브쿼리 EXIST 함수 사용 (1) | 2024.11.03 |
select 1 from 테이블 쿼리 사용하는 방법 (0) | 2024.11.02 |