본문 바로가기
study_db

오라클의 간단한 if 문 : DECODE 함수

by developer_j 2023. 8. 4.
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
반응형