728x90
반응형
오라클에서도 if 문처럼, true 와 false 로 다른 값을 보여주도록 할 수 있다.
decode 문이 그렇다.
SELECT DECODE(A, B, C, D, F, G) FROM TABLE;
위의 함수를 자바 소스처럼 풀어서 써보자면 의미가 아래와 같다.
if (A == B) {
return C;
} else if (A == D) {
return F;
} else {
return G;
}
위의 소스처럼 순서대로 비교해서 결과값이 나오게 된다.
🐦 주의사항 🐦
1) DECODE 함수의 파라미터는 여러개를 사용할 수 있지만 최소 3개는 들어가야 한다.
파라미터를 2개 이하로 쓰면 아래와 같은 오류 발생함
ORA-00938: 함수의 인수가 충분하지 않습니다
00938. 00000 - "not enough arguments for function"
2) 아무것도 일치하지 않았을 때 돌려줄 값을 명시해주지 않으면 NULL 이 리턴된다.
따라서, DECODE 함수의 작동을 위한 최소 파라미터 갯수는 3개이지만,
만약 비교하는 값 중 아무것도 일치하는 것이 없을 때, 일부러 NULL을 표현하고 싶은 것이라고 하더라도
추후 유지보수 가독성을 위해서 4개는 넣어줘야 함!
사용해보기
쿼리문
WITH TBL AS (
SELECT
'M' AS 성별
, '홍길동' AS 이름
FROM DUAL
)
SELECT
DECODE(TBL.성별, 'M', '남성', '여성') AS 성별
FROM TBL;
결과
728x90
반응형
'study_db' 카테고리의 다른 글
오라클 LPAD, RPAD 함수 : 공백 채우기 (0) | 2023.09.15 |
---|---|
오라클 INSTR 함수 : 텍스트 인덱스 가져오기, (indexOf) (0) | 2023.09.15 |
오라클 WITH AS 문 = 임시로 1회용 테이블 만들기 (0) | 2023.08.04 |
오라클 DATA TYPE 확인 : typeof() ? (0) | 2023.06.27 |
MERGE INTO 오류 - ORA-38101: INSERT VALUES 절에 부적합한 열이 있음 (0) | 2023.06.27 |