。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

업무

[ORACLE 함수] DECODE / CASE

quarrrter 2024. 1. 18. 13:17

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