Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL에서 NULL과 NON-NULL 값을 활용한 산술 연산 수행 방법 (IFNULL 함수)

MySQL에서 NULL 값이 포함된 컬럼끼리 산술 연산을 수행하면 결과가 항상 NULL이 되어 버립니다. 이러한 문제를 해결하려면 IFNULL() 함수를 사용하여 NULL 값을 다른 값(예: 0)으로 대체한 뒤 계산하는 것이 효과적입니다.

IFNULL() 함수란?

IFNULL() 함수는 첫 번째 인자의 값이 NULL이 아니면 그 값을 그대로 반환하고, NULL이면 두 번째 인자로 지정한 대체 값을 반환합니다. 따라서 NULL이 포함된 데이터의 합계나 평균 등을 정확하게 구할 때 매우 유용합니다.

예제 테이블 생성

먼저 두 개의 int 타입 컬럼을 가진 테이블을 생성해 보겠습니다.

mysql> create table DemoTable1462
-> (
-> Value1 int,
-> Value2 int
-> );
Query OK, 0 rows affected (0.55 sec)

데이터 삽입

insert 명령을 사용하여 NULL 값이 포함된 레코드들을 삽입합니다.

mysql> insert into DemoTable1462 values(10,20);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable1462 values(50,NULL);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable1462 values(NULL,70);
Query OK, 1 row affected (0.25 sec)

저장된 데이터 확인

select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select * from DemoTable1462;

위 쿼리는 다음과 같은 결과를 출력합니다.

+--------+--------+
| Value1 | Value2 |
+--------+--------+
| 10 | 20 |
| 50 | NULL |
| NULL | 70 |
+--------+--------+
3 rows in set (0.00 sec)

IFNULL()을 사용한 산술 연산

다음은 NULL과 NON-NULL 값이 섞여 있는 컬럼에 대해 IFNULL() 함수를 적용하여 덧셈 연산을 수행하는 쿼리입니다.

mysql> select ifnull(Value1,0)+ifnull(Value2,0) from DemoTable1462;

실행 결과는 다음과 같습니다.

+-----------------------------------+
| ifnull(Value1,0)+ifnull(Value2,0) |
+-----------------------------------+
| 30 |
| 50 |
| 70 |
+-----------------------------------+
3 rows in set (0.00 sec)

결과 분석

각 행의 결과를 살펴보면 다음과 같습니다.

  • 첫 번째 행: 10 + 20 = 30 (두 값 모두 NULL이 아님)
  • 두 번째 행: 50 + 0 = 50 (Value2의 NULL이 0으로 대체됨)
  • 세 번째 행: 0 + 70 = 70 (Value1의 NULL이 0으로 대체됨)

만약 IFNULL() 없이 단순히 Value1 + Value2로 연산했다면, NULL이 포함된 두 번째와 세 번째 행의 결과는 모두 NULL로 출력되었을 것입니다. 이처럼 IFNULL() 함수를 활용하면 NULL 값을 안전하게 처리하면서 원하는 산술 연산 결과를 얻을 수 있습니다.