SQLite | SQLite 함수 | 지정한 값과 같으면 NULL을 반환 (nullif 함수)

nullif 함수는 두 인수의 값을 비교하여 같으면 NULL을 반환하고 같지 않으면 첫 번째 인수의 값을 반환한다. 여기에서는 nullif 함수의 사용법에 대해 설명한다.

nullif 함수 사용법

nullif 함수는 두 값을 비교하여 같으면 NULL을 반환하고 같지 않으면 첫 번째 값을 반환한다. 형식은 다음과 같다.

nullif(값1, 값2)

첫 번째 인수의 값을 두 번째 인수와 비교하여 같다면 NULL로 대체하려는 경우에 사용한다. 예를 들어, 두 번째 인수에 0을 지정하여 0과 같으면 NULL로 하고 싶은 경우에 사용할 수 있다.

그러면 실습을 해보도록 하겠다. 먼저 다음과 같이 테이블을 만든다.

create table score (name text, point integer);
sqlite> create table score (name text, point integer);
sqlite>

INSERT 문을 사용하여 다음과 같이 데이터를 추가한다.

insert into score values ('devkuma', 84);
insert into score values ('kimkc', 73);
insert into score values ('araikuma', -1);
insert into score values ('happykuma', 91);
sqlite> insert into score values ('devkuma', 84);
sqlite> insert into score values ('kimkc', 73);
sqlite> insert into score values ('araikuma', -1);
sqlite> insert into score values ('happykuma', 91);
sqlite>

여기서 avg 함수를 사용하여 point 컬럼 값의 평균을 구한다. 아래와 같이 평균을 구하면 (84 + 73 - 1 + 91) ÷ 4 = 61.75 이다.

select avg(point) from score;
sqlite> .mode column
sqlite> .header on
sqlite>
sqlite> select avg(point) from score;
avg(point)
----------
61.75
sqlite>

수치가 -1의 컬럼은 어떤 이유로 제외하려고 한다면, nullif 함수를 사용 컬럼의 값이 -1 인 경우에는 NULL로 변환하여 평균을 구한다. avg 함수는 NULL 값은 제외하고 계산하기 때문에 아래와 같이 평균을 구하면 (84 + 73 + 91) ÷ 3 = 82.66이다.

select avg(nullif(point, -1)) from score;
sqlite> select avg(nullif(point, -1)) from score;
avg(nullif(point, -1))
----------------------
82.6666666666667
sqlite>

이와 같이 특정 값과 같은 경우에 NULL로 대체하려는 경우에 사용한다.




최종 수정 : 2019-11-13