if else와 비슷한 기능 수행
DECODE(컬럼, 조건1, 결과1, 조건2, 결과2, 조건3, 결과3,default)
=> ELSE 부분 생략 가능; 해당 조건이 없으면 NULL
SELECT GENDER
,DECODE(GENDER, 'M', '남자', 'F', '여자') GENDER2
FORM TEMP
=> NULL 값 체크 가능
SELECT ENAME
, COMM
, DECODE(COMM, NULL, 'N', 'Y') COMM_UN
FORM SCHOOL
=> DECODE 내부에 또 다른 DECODE 함수 사용 가능
=> 조건이 많은 경우 줄바꿈을 하여 쿼리 작성 권장
[CASE]
1. If 문 방식
CASE WHEN city='seoul' THEN 'KOREA'
WHEN city='tokyo' THEN 'JAPAN'
ELSE 'Unknown'
2. Switch 문 방식
CASE city
WHEN 'seoul' THEN 'KOREA'
WHEN 'tokyo' THEN 'JAPAN'
ELSE 'Unknown'
END AS NAME
3. 비교 연산자, 범위 연산자 등 사용 가능
CASE WHEN score >= 90 THEN '상'
WEHN score >= 80 THEN '중'
WHEN score >= 70 TEHN '하'
ELSE '최악!'
END AS '등급'
=> ELSE 부분 생략 가능하며, 만족하는 조건이 없을 경우 NULL 리턴
=> WHERE 절에 사용 가능
=> 오라클 내장 함수를 조건으로 사용 가능
CASE WHEN TO_CHAR(hiredate, 'q') = '1' THEN '1분기'
TO_CHAR(hiredate, 'q')는 hiredate 열의 월을 숫자로 변환하는 함수입니다.
'q'는 날짜를 분기(quarter)로 표시하라는 의미입니다. 날짜의 월을 1, 2, 3, 4로 변환하여 표현하며,
각 분기는 3개의 연속된 월을 포함합니다.
따라서 TO_CHAR(hiredate, 'q') = '1'은
hiredate 열의 월이 1, 2, 3월인 경우에 해당하는 행을 선택합니다.
이 조건식은 주로 분기별로 데이터를 선택하거나 처리할 때 사용됩니다.
=> 사용자 정의 함수를 조건으로 사용 가능
CASE WHEN fn_get_dept name(deptno) = 'SALES' THEN 'Y'
'업무' 카테고리의 다른 글
[ORACLE 함수] EXISTS & IN (1) | 2024.01.19 |
---|---|
[ORACLE 함수] SYSDATE (1) | 2024.01.18 |
[ORACLE 함수] MERGE INTO (2) | 2024.01.18 |
[jQuery] wrapper (0) | 2024.01.16 |
[ORACLE] ORACLE 데이터 타입 (4) | 2024.01.15 |