프로그래밍

오라클 SQL 함수 NVL, DECODE 사용방법과 예시

프로그래머 무비스 2022. 3. 5. 15:25
728x90
반응형

1) NVL

NVL은 컬럼값이 NULL(값이 없음)일때 다른 값을 출력하는 함수다.

 

- 기본형태 : NVL(컬럼명, '출력을 원하는값')

- 예시

이름 등록여부
서현진 Y
문정혁  
유승우 N

위와 같은 TABLE이 있다고 하자.

이 경우 문정혁의 등록여부 값이 NULL이다.

등록여부의 값이 없을 때(등록여부가 NULL일 때) 등록을 안한 것이라고 한다면

아래와 같은 SELECT문으로 좀 더 정확하게 데이터를 출력할 수 있다.

 

SELECT 이름, NVL(등록여부,'N')

FROM TABLE;

 

그럼 아래와 같이 문정혁의 등록여부 값이 없었는데 'N'으로 표현이 가능하다.

이름 등록여부
서현진 Y
문정혁 N
유승우 N

 

2) DECODE

DECODE는 조건을 만족하면 x, 만족하지 않으면 y를 출력할 수 있는 함수다. 

 

- 기본형태 : DECODE(컬럼명, 조건, '조건이 충족할 경우 출력할 값', '충족하지 않을 때 출력할 값')

                DECODE(컬럼명, 조건1, '조건1이 충족할 경우 출력할 값', 조건2, '조건2가 충족할 경우 출력할 값'

                            ,'충족하지 않을 때 출력할 값'

               DECODE 괄호안에 조건과 그 조건이 충족할 경우 출력할 값은 1개, 2개만 되는 게 아니라 계속 추가가능!

- 예시

이름 등록여부
서현진 Y
문정혁  
유승우 N

등록을 했을 경우(등록여부가 Y인 경우) 100을 내야하고 아닐 경우 20을 내야한다고 한다면 

아래와 같은 SELECT문으로 등록비를 출력할 수 있다.

 

SELECT 이름, NVL(등록여부,'N'), DECODE(등록여부, 'Y', 100, 20)

FROM TABLE;

 

그럼 아래와 같이 등록비를 출력할 수 있다.

이름 등록여부 등록비
서현진 Y 100
문정혁 N 20
유승우 N 20



 

728x90
반응형