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

MySQL ISNULL() 함수와 IS NULL 연산자의 차이점 완벽 정리

MySQL에서 ISNULL() 함수와 IS NULL 연산자 비교

MySQL에서 ISNULL() 함수와 IS NULL 연산자는 기능적으로 사실상 차이가 없으며, 거의 동일한 방식으로 작동합니다. 두 방식 모두 표현식이 NULL이면 1을, NULL이 아니면 0을 반환합니다.

유일하게 눈에 띄는 차이는 문법 구조입니다. ISNULL() 함수는 표현식을 인수(argument)로 받는 반면, IS NULL 비교 연산자는 표현식이 연산자의 왼쪽에 위치합니다.

기본 사용 예제

다음 예제를 통해 두 방식이 동일한 결과를 반환하는 것을 확인할 수 있습니다.

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

mysql> Select ISNULL(1);
+-----------+
| ISNULL(1) |
+-----------+
| 0         |
+-----------+
1 row in set (0.00 sec)

위 예제에서 값 1은 NULL이 아니므로 두 쿼리 모두 0을 반환합니다. 이번에는 0으로 나누어 NULL이 발생하는 경우를 살펴보겠습니다.

mysql> Select ISNULL(1/0);
+-------------+
| ISNULL(1/0) |
+-------------+
| 1           |
+-------------+
1 row in set (0.00 sec)

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

1/0의 결과는 NULL이므로, 두 방식 모두 1을 반환합니다.

WHERE 절에서의 활용

실무에서는 주로 WHERE 절에서 NULL 값을 가진 행을 조회할 때 이 두 방식을 활용합니다. 아래 예제는 Salary(급여)가 NULL인 직원을 조회하는 쿼리입니다.

mysql> Select * from Employee WHERE Salary IS NULL;
+----+-------+--------+
| ID | Name  | Salary |
+----+-------+--------+
| 7  | Aryan | NULL   |
| 8  | Vinay | NULL   |
+----+-------+--------+
2 rows in set (0.00 sec)

mysql> Select * from Employee WHERE ISNULL(Salary);
+----+-------+--------+
| ID | Name  | Salary |
+----+-------+--------+
| 7  | Aryan | NULL   |
| 8  | Vinay | NULL   |
+----+-------+--------+
2 rows in set (0.00 sec)

두 쿼리 모두 급여가 NULL인 직원(Aryan, Vinay)을 동일하게 반환합니다.

정리

  • ISNULL(expr): 표현식을 인수로 받는 함수 형태
  • expr IS NULL: 표현식이 왼쪽에 오는 비교 연산자 형태
  • 두 방식 모두 NULL이면 1, NULL이 아니면 0을 반환하며 결과는 완전히 동일합니다.

따라서 상황에 맞게 가독성이 좋은 쪽을 선택하여 사용하면 됩니다. 일반적으로 WHERE 절에서는 IS NULL 연산자가 더 널리 사용되는 편입니다.