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

MySQL에서 열의 NULL 또는 NOT NULL 값 확인하는 방법

MySQL에서 특정 열의 값이 NULL인지 NOT NULL인지 확인하려면 IS NOT NULL 연산자를 사용하면 됩니다. 이 연산자는 조건식처럼 동작하며, 값이 NULL이 아니면 1(참), NULL이면 0(거짓)을 반환합니다.

기본 문법

SELECT yourColumnName IS NOT NULL FROM yourTableName;

예제: 테이블 생성

먼저 실습에 사용할 테이블을 생성해 보겠습니다.

mysql> CREATE TABLE DemoTable1408
    -> (
    -> FirstName VARCHAR(30)
    -> );
Query OK, 0 rows affected (0.54 sec)

데이터 삽입

INSERT 문을 사용해 일반 문자열, 빈 문자열(''), 그리고 NULL 값을 포함한 레코드를 삽입합니다.

mysql> INSERT INTO DemoTable1408 VALUES('Chris');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable1408 VALUES('');
Query OK, 1 row affected (0.12 sec)
mysql> INSERT INTO DemoTable1408 VALUES(NULL);
Query OK, 1 row affected (0.13 sec)
mysql> INSERT INTO DemoTable1408 VALUES('David');
Query OK, 1 row affected (0.10 sec)

전체 레코드 조회

SELECT 문으로 테이블의 모든 레코드를 확인합니다.

mysql> SELECT * FROM DemoTable1408;

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

+-----------+
| FirstName |
+-----------+
| Chris     |
|           |
| NULL      |
| David     |
+-----------+
4 rows in set (0.00 sec)

NULL 여부 확인하기

이제 IS NOT NULL을 사용하여 각 행의 NULL 여부를 확인하는 쿼리입니다.

mysql> SELECT FirstName IS NOT NULL FROM DemoTable1408;

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

+-----------------------+
| FirstName IS NOT NULL |
+-----------------------+
|                     1 |
|                     1 |
|                     0 |
|                     1 |
+-----------------------+
4 rows in set (0.00 sec)

결과 해석

'Chris', ''(빈 문자열), 'David'는 모두 NULL이 아니므로 1이 반환되었고, 세 번째 행의 NULL 값만 0이 반환된 것을 확인할 수 있습니다.

여기서 주목할 점은 빈 문자열('')은 NULL과 다르다는 것입니다. 빈 문자열은 실제로 값이 존재하는 상태이므로 IS NOT NULL 검사에서 참(1)으로 평가됩니다.

응용: WHERE 절과 함께 사용하기

실무에서는 WHERE 절과 결합하여 NULL이 아닌 행만 조회하는 경우가 많습니다.

-- NULL이 아닌 행만 조회
mysql> SELECT * FROM DemoTable1408 WHERE FirstName IS NOT NULL;

-- NULL인 행만 조회
mysql> SELECT * FROM DemoTable1408 WHERE FirstName IS NULL;

이처럼 IS NOT NULL은 SELECT 목록에서 단순히 참/거짓 값을 반환할 수도 있고, WHERE 절에서 데이터를 필터링하는 조건으로도 활용할 수 있습니다.