SQL, IFNULL 함수 사용법 (NULL 값 대체)

IFNULL

SQL에서 IFNULL 함수는 컬럼 값이 NULL인 경우 정해진 값으로 대체할 때 사용됩니다. SQL에서 NULL이라는 값은 상당히 자주 볼 수 있고, NULL이어서는 안 되는 옵션이 설정되는 등의 제약도 있기 때문에 이런 면에서 유용하게 사용할 수 있는 함수입니다.

 

구문

SELECT IFNULL(column_name, replacement_value) FROM table_name;
  • column_name : 검사할 컬럼 값
  • replacement_value : 검사한 컬럼값이 NULL인 경우 대체할 값
  • table_name : 조회할 테이블명

 

예시 1) 보너스가 NULL인 경우 0으로 대체

아래와 같이 직원들의 정보가 담긴 Employees 테이블이 있다고 가정합니다.

 

employees 테이블

 

보너스가 NULL인 직원들이 몇 있습니다. 이를 조회하면 보너스가 NULL인 경우 0으로 대체해서 볼 수 있습니다.

SELECT ID, FirstName, LastName, Salary, IFNULL(Bonus, 0) as Bonus
FROM Employees;

 

ifnull

 

예제 2) NULL 값을 0으로 바꾸고 더하기 (총수입 계산)

각 직원들의 Salary와 Bonus의 합을 구하는 상황입니다. 그런데 문제가 있습니다. SQL에서 숫자와 NULL을 더하면 결과값이 NULL로 떨어집니다. 이런 경우 NULL을 0으로 변환하여 계산하면 됩니다.

SELECT ID, FirstName, LastName, IFNULL(Salary, 0) + IFNULL(Bonus, 0) as TotalIncome
FROM Employees;

 

ifnull totalincome

 

예제 3) NULL이면 0으로 변환해서 INSERT

이 글에선 SQL 쿼리를 직접 다루기 때문에 이번 예시가 좀 와닿지 않을 수 있지만, 만약 웹 사이트에서 사용자의 값을 전달받아 INSERT 하는 로직인 경우를 상상할 수 있습니다. 이런 경우 값이 NULL이어서는 안 되는 컬럼에 IFNULL 함수를 이용하여 사용자가 NULL 값을 전달하면 특정 값이 들어가도록 구현할 수 있습니다.

 

예를 들어, Salary와 Bonus 값이 NULL인 경우 각각 5000과 0으로 INSERT하는 쿼리는 다음과 같습니다.

INSERT INTO Employees (ID, FirstName, LastName, Salary, Bonus)
VALUES (6, 'Alex', 'Kim', IFNULL(NULL, 5000), IFNULL(NULL, 0));
반응형

댓글

Designed by JB FACTORY