💡null 함수
nvl(컬럼, 값)
nvl(컬럼, 값, 값)
nvl(null value)은 null을 치환하는 함수이다.
null value
case end 사용
SELECT
name,
CASE
WHEN population IS NOT NULL THEN population
WHEN population IS NULL THEN 0
END
FROM tblCountry;
nvl 사용
SELECT name, nvl(population, 0) FROM tblCountry;
null 함수는 null 전용의 replace 함수라고 볼 수 있다.
null을 찾아서 0으로 값을 바꿔주었다.
일련번호 만들기
CREATE TABLE tblItem
(
seq NUMBER PRIMARY KEY,
name varchar2(100) NOT NULL,
color varchar2(50) NOT NULL
);
일련번호가 필요한 테이블을 생성하였다.
null value를 사용하지 않을 경우
--ORA-01400: cannot insert NULL into ("HR"."TBLITEM"."SEQ")
INSERT INTO tblItem (seq, name, color)
VALUES ((SELECT max(seq) + 1 FROM tblItem), '마우스', 'white');
INSERT INTO tblItem (seq, name, color)
VALUES (1, '마우스', 'white');
이 경우는 데이터를 수동으로 한 번 넣어준 뒤에 실행해 줘야 오류가 발생하지 않고 값이 들어가므로 좋은 방법이 아니다.
이때 null value를 이용할 수 있다.
null value를 사용할 경우
INSERT INTO tblItem (seq, name, color)
VALUES ((SELECT nvl(max(seq), 0) + 1 FROM tblItem), '마우스', 'white');
처음에 데이터를 수동으로 넣을 필요 없이 null일 경우에도 데이터가 들어간다.
null value 2
SELECT
name, nvl2(population, 'A', 'B')
FROM tblCountry;
nvl2는 null일 경우와 null이 아닐 경우에 따라서 다른 값을 넣어줄 수 있다.
위 쿼리는 null이 아니면 A를 null이면 B를 돌려준다.