MySQL에서 특정 컬럼이 NULL인지 아니면 빈 문자열('')인지 확인하려면 WHERE 절과 함께 IS NULL 조건을 사용하고, 빈 값의 경우 ''(빈 문자열) 조건을 사용하면 됩니다.
NULL과 빈 문자열은 서로 다른 개념입니다. NULL은 '값이 존재하지 않음'을 의미하는 반면, 빈 문자열은 길이가 0인 실제 값이 저장된 상태를 의미합니다. 따라서 두 가지를 모두 확인하려면 OR 조건으로 결합해야 합니다.
1. 테이블 생성
먼저 CREATE 명령으로 테스트용 테이블을 생성합니다.
mysql> CREATE table ColumnValueNullDemo
-> (
-> ColumnName varchar(100)
-> );
Query OK, 0 rows affected (0.61 sec)
2. 빈 값 삽입 및 조회
INSERT 명령을 사용해 테이블에 빈 값을 삽입합니다.
mysql> INSERT into ColumnValueNullDemo values(' ');
Query OK, 1 row affected (0.14 sec)SELECT 명령으로 테이블의 레코드를 조회합니다.
mysql> SELECT * from ColumnValueNullDemo;
위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.
+-------------------+
| ColumnName |
+-------------------+
| |
+-------------------+
1 row in set (0.00 sec)
3. NULL 또는 빈 값 확인 쿼리
컬럼이 NULL인지 빈 값인지 확인하는 기본 문법은 다음과 같습니다.
SELECT * FROM yourTableName
WHERE yourSpecificColumnName IS NULL
OR yourSpecificColumnName = '';
IS NULL은 컬럼 값이 NULL일 때 참이 되고, ''(빈 문자열) 비교 조건은 값이 비어 있을 때 참이 됩니다.
이 문법을 실제 테이블에 적용한 쿼리는 다음과 같습니다.
mysql> SELECT * FROM ColumnValueNullDemo
WHERE ColumnName IS NULL OR ColumnName = '';
실행 결과는 다음과 같습니다.
+------------+
| ColumnName |
+------------+
| |
+------------+
1 row in set (0.00 sec)
빈 값이 두 번째 조건('' 비교)에 해당하기 때문에 위와 같은 결과가 반환된 것입니다.
4. NULL 값 추가 후 확인
이번에는 INSERT 명령으로 NULL 값을 테이블에 삽입합니다.
mysql> INSERT into ColumnValueNullDemo values();
Query OK, 1 row affected (0.14 sec)
SELECT 명령으로 테이블 내용을 다시 확인합니다.
mysql> SELECT * from ColumnValueNullDemo;
실행 결과는 다음과 같습니다.
+------------+
| ColumnName |
+------------+
| |
| NULL |
+------------+
2 rows in set (0.00 sec)
이제 NULL 또는 빈 값을 확인하는 조건을 적용해 봅니다.
mysql> SELECT * FROM ColumnValueNullDemo
WHERE ColumnName IS NULL OR ColumnName = '';
두 조건이 각각의 행에 대해 참이 되므로 테이블의 두 행이 모두 출력됩니다.
+------------+
| ColumnName |
+------------+
| |
| NULL |
+------------+
2 rows in set (0.00 sec)
참고: 공백이 포함된 값 처리
컬럼에 공백만 있는 값(예: ' ')이 저장되어 있을 수도 있습니다. 이런 경우까지 처리하려면 TRIM 함수를 함께 사용하는 것이 좋습니다.
SELECT * FROM yourTableName
WHERE yourSpecificColumnName IS NULL
OR TRIM(yourSpecificColumnName) = '';
이렇게 하면 NULL, 빈 문자열, 공백만 있는 값을 한 번에 걸러낼 수 있어 데이터 검증 시 유용하게 활용할 수 있습니다.