Programming/데이터베이스

[오라클 데이터베이스] NULL 관련 함수 (NVL/NVL2/NULLIF)와 DECODE 함수

cbw1030 2019. 10. 13. 21:39
반응형

https://www.youtube.com/user/newlec1의 내용을 정리해서 포스팅합니다.

 

데이터베이스를 이용할 때 NULL로 인해 애를 먹는 상황이 가끔 발생한다. 이를 해결하기 위해 NULL 관련 함수를 알아보고 DECODE 함수를 알아보자.

 

[ NVL(입력값, 대체값) ]

- 반환 값이 NULL일 경우에 대체 값을 제공하는 함수이다.

 

* SELECT NVL(AGE, 0) FROM MEMBERS;

  • 나이를 조회하는데 해당 컬럼의 값이 NULL이라면 0으로 출력한다.

 

[ NVL2(입력값, NOTNULL 대체값, NULL 대체값) 함수 ]

- NVL에서 조건을 하나 더 확장한 함수이다.

- NULL일 경우 대체값도 넣을 수 있고 NULL이 아닐 경우 대체 값도 넣을 수 있다.

 

* SELECT NVL2(AGE, 100/AGE, 0) FROM MEMBERS;

 

 

[ NULLIF(값1, 값2) ]

- NVL, NVL2가 NULL값일 경우에 NULL을 처리하는 함수라면 NULLIF는 NULL값을 만들기 위한 함수이다.

- 두 값이 같은 경우 NULL, 그렇지 않은 경우 첫 번째 값을 반환하는 함수이다.

 

* SELECT NULLIF(AGE, 19) FROM MEMBERS;

  • 19살이 해당하는 행은 NULL을 반환한다.

 

 

[ DECODE(기준값, 비교값, 출력값, 비교값, 출력값) ]

- 조건에 따른 값 선택하기

 

* SELECT DECODE(SUBSTR(PHONE, 1, 3), '011', 'SK', '016', 'KT', '기타') FROM MEMBERS;

* SELECT DECODE(SUBSTR(PHONE, 1, 3),

                                    '011', 'SK',

                                    '016', 'KT',

                                    '기타') FROM MEMBERS;

  • 두 구문 모두 동일하다. 알아보기 힘들어서 줄 맞춤을 해줬을 뿐이다.
반응형