오라클에서는 NULL값을 체크하여 다른 값으로 치환하는 함수가 있다.

 

먼저, 테이블을 생성하고 샘플데이터를 넣어준다.

CREATE TABLE SAMPLE(
  name VARCHAR2(20),
  age INTEGER
);
INSERT INTO SAMPLE VALUES('홍길동',15);
INSERT INTO SAMPLE VALUES('강길동',NULL);
INSERT INTO SAMPLE VALUES('박길동','');
INSERT INTO SAMPLE VALUES('최길동',17);

 

NAME AGE
홍길동 15
강길동 (null)
박길동 (null)
최길동 17

※  오라클에서는 NULL과 빈문자열 ''이 모두 NULL로 처리가 된다.

 

1. NVL

사용방법 : NVL(표현식1,표현식2)

- 표현식1의 결과값이 NULL이면 표현식2의 값을 출력한다.

- 단, 표현식1과 표현식2의 결과 데이터 타입이 같아야한다.

 

ex01. AGE컬럼이 NULL값일 경우 0으로 치환한다.

-> SELECT NAME,NVL(AGE,0) AS AGE FROM SAMPLE;

 

NAME AGE
홍길동 15
강길동 0
박길동 0
최길동 17

 

2. NVL2

사용방법 : NVL2(표현식,표현식1,표현식2)

- 표현식의 값이 NULL이 아닐 경우에는 표현식1의 값을 반환하고, NULL일 경우에는 표현식2의 값을 반환한다.

 

ex01. AGE컬럼이 NULL값일 경우 'NULL'로 NULL값이 아니면 'NOT NULL'로 치환한다.

-> SELECT NAME,NVL2(AGE,'NOT NULL','NULL') AS AGE FROM SAMPLE;

 

NAME AGE
홍길동 NOT NULL
강길동 NULL
박길동 NULL
최길동 NOT NULL

 

3. NULLIF

사용방법 : NULLIF(표현식1,표현식2)

- 표현식1과 표현식2가 같으면 NULL값을 , 같지 않으면 표현식1을 리턴한다.

 

ex01. AGE컬럼 값이 15이면 NULL값을 출력

-> SELECT NAME,NULLIF(AGE,15) AS AGE FROM SAMPLE;

 

NAME AGE
홍길동 (null)
강길동 (null)
박길동 (null)
최길동 17

 

AGE컬럼값이 15인 홍길동에 AGE 컬럼값이 NULL로 치환된다.

 

 

3. COALESCE

사용방법 : COALESCE(표현식1,표현식2,표현식3...)

- 임의의 개수 표현식에서 NULL이 아닌 최초의 표현식을 나타낸다.

- 표현식1이 NULL이 아니면 표현식1값을 그렇지 않으면 표현식2,표현식3...값을 반환한다.

- 단, COALESCE안에 사용되는 값들의  데이터 타입이 같아야한다.

 

ex01. AGE컬럼 값이 NULL이면 0을 출력

-> SELECT NAME,COALESCE(AGE,0) AS AGE FROM SAMPLE;

 

NAME AGE
홍길동 15
강길동 0
박길동 0
최길동 17

 

+ Recent posts