SQL

[SQL] NVL , NVL2

yangcotton 2023. 2. 10. 16:21

우선 NULL 값이란 아직 정의되지 않을 값으로 0과 공백과는 다르다. (0은 숫자이고, 공백은 문자이다)

 

NVL 함수는 NULL과 연산하고 싶을때 시스템에서 의미없는 문자로 바꿔서 연산할때 사용한다.

 

SELECT NVL(ANUM , BNUM) AS NUM
	FROM TABLE1

이때 NVL의 기능은 TABLE1에서 ANUM을 NUM로 가져오고싶은데 ANUM이 NULL일때 BNUM을 조회하는 쿼리이다.

 

NVL2는 NVL을 확장한 함수로

SELECT NVL(ANUM , BNUM , CNUM ) AS NUM
	FROM TABLE1

ANUM이 NULL이면 BNUM을

ANUM , BNUM 이 둘다 NULL 이면 CNUM 을 조회한다.

 

======

 

다른방식으로도 사용가능하다.

NVL("값", "지정값")

값이 NULL인 경우 지정값으로 조회하는것도 가능한다.

 

예를들어 ANUM이 NULL인 경우

SELECT NVL(ANUM, 00) NUM FROM TABLE1

결과값은 NULL이 아닌 내가 지정한값 00으로 나온다.

 

NVL2도 마찬가지로

 NVL2("값", "지정값1", "지정값2") // NVL2("값", "NOT NULL", "NULL") 

SELECT NVL(ANUM, 'A', 'B') NUM FROM TABLE1

이렇게 해서 NULL값인경우 A를 값이 NULL이 아니면 B를 조회한다.