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

MySQL 산술 연산에서 NULL이 반환되는 이유와 처리 방법

MySQL에서 NULL은 값이 아니며, 0(영)과도 다른 개념입니다. NULL은 '알 수 없는 값' 또는 '값이 존재하지 않음'을 의미하는 특수한 상태이기 때문에, 산술 표현식에 NULL이 포함되면 그 결과는 항상 NULL로 반환됩니다.

NULL이 포함된 산술 연산의 결과

다음 예제를 통해 확인할 수 있습니다.

mysql> Select 100*NULL;
+----------+
| 100*NULL |
+----------+
|     NULL |
+----------+
1 row in set (0.00 sec)

mysql> Select 100+NULL;
+----------+
| 100+NULL |
+----------+
|     NULL |
+----------+
1 row in set (0.00 sec)

위 예제에서 볼 수 있듯이, 곱셈이든 덧셈이든 산술 표현식에 NULL이 하나라도 포함되면 결과는 무조건 NULL이 됩니다. 이는 100에 어떤 알 수 없는 값을 더하거나 곱해도 그 결과 역시 알 수 없기 때문입니다.

NULL 처리 방법

실무에서는 이러한 NULL 전파를 방지하기 위해 IFNULL() 또는 COALESCE() 함수를 사용합니다.

mysql> Select 100*IFNULL(NULL, 0);
+---------------------+
| 100*IFNULL(NULL, 0) |
+---------------------+
|                   0 |
+---------------------+
1 row in set (0.00 sec)

IFNULL(NULL, 0)은 첫 번째 인자가 NULL일 때 두 번째 인자인 0을 대신 반환하므로, 산술 연산의 결과가 NULL이 되는 것을 막을 수 있습니다. 컬럼 데이터를 다룰 때도 마찬가지로 SELECT price * IFNULL(discount, 0) FROM orders;처럼 활용하면 안전하게 계산할 수 있습니다.

정리

  • NULL은 0이나 빈 문자열이 아니라 '값이 없음'을 나타내는 특수한 값입니다.
  • 산술 표현식에 NULL이 포함되면 결과는 항상 NULL이 됩니다.
  • NULL로 인한 오류를 방지하려면 IFNULL() 또는 COALESCE()로 기본값을 지정하는 것이 좋습니다.