오라클에서는 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 |
'프로그래밍&IT > Oracle' 카테고리의 다른 글
[Oracle] 셀프조인(SELF JOIN) (0) | 2021.07.27 |
---|---|
[Oracle] 계층형 질의 (0) | 2021.07.27 |
[Oracle] 외래키 수정/삭제 하기 (0) | 2021.07.20 |
[Oracle] 트리거(Trigger) (0) | 2021.07.16 |
[Oracle] 제약조건 - 외래키(FK, Foreign key) (0) | 2021.07.14 |