데이터베이스에서 NULL 처리를 할 때 CASE 또는 IF 함수를 사용해도 되지만 더 리소스를 적게 사용할 수 있는 함수가 있다.
바로 COALESCE 함수인데, 인수로 들어가는 값을 차례대로 확인하여 NULL이 아닌 데이터가 나왔을 때 그 값을 반환한다.
아래 나오는 inquiry 테이블과는 다르지만 어느 반에서 학생들이 시험을 봤다고 가정하자. 그런데 시험을 아예 보지 않은 학생이 있다면 데이터는 NULL로 들어가지만 반 평균 점수를 낼 때는 값을 포함시켜야 할 것이다. 이 때 NULL 데이터가 계산식에 들어가면 해당 데이터를 제외하고 계산하거나 오류가 생길 수 있으니 처리해주어야 하는데 그 역할을 해주는 게 COALESCE 함수이다.
id | pref | age | star |
1 | 서울시 | 20 | 2 |
2 | 충청도 | 30 | 5 |
3 | 경기도 | 40 | 3 |
4 | 충청도 | 20 | 4 |
5 | 서울시 | 30 | 4 |
6 | 서울시 | 20 | 1 |
7 | NULL | NULL | NULL |
SELECT
AVG(COALESCE(star, 0))
FROM
inquiry;
위와 같이 COALESCE 함수를 사용해서 쿼리문을 작성하면 NULL 값을 0으로 치환해서 계산하지만
SELECT
AVG(star)
FROM
inquiry;
위와 같이 작성한다면 NULL 값을 제외하고 계산하기 때문에 그 결과값이 달라진다.