Article
SQL에서 NULL과 빈 문자열 구분하기
도입

SQL을 다루다 보면 자주 마주치는 혼동이 있습니다. NULL과 빈 문자열(empty string)의 차이입니다. 데이터베이스에서는 이 두 값이 완전히 다르게 저장되고 처리되지만, 쿼리를 작성할 때 실수하기 쉽습니다.
NULL vs 빈 문자열의 차이
데이터베이스에서:
- NULL: 값이 없음을 나타내는 특수한 표식. 데이터가 입력되지 않았거나 알 수 없는 상태입니다.
- 빈 문자열 (""): 값은 있지만 내용이 없다는 뜻. 명시적으로 아무것도 입력하지 않은 경우입니다.
예를 들어 사용자 테이블에서:
phone컬럼이 NULL = 전화번호를 등록하지 않음phone컬럼이 "" = 전화번호 입력 필드에 엔터를 쳤지만 값은 없음
SQL 쿼리로 구분하기
빈 문자열 데이터 조회
SELECT * FROM users WHERE phone = '';
NULL 데이터 조회
SELECT * FROM users WHERE phone IS NULL;
SQL에는 IS EMPTY 문법이 없습니다. 빈 문자열은 일반적인 문자열 비교 연산자(=)를 사용하면 됩니다.
실무에서 자주 사용하는 패턴
1. NULL과 빈 문자열 모두 제외
유효한 데이터만 조회하려면:
SELECT * FROM users
WHERE phone IS NOT NULL
AND phone != '';
2. NULL이거나 빈 문자열인 경우 모두 조회
무언가 입력된 값만 필요한 경우의 반대:
SELECT * FROM users
WHERE phone IS NULL
OR phone = '';
3. 빈 문자열을 NULL로 변환
데이터 정제 시 빈 문자열을 NULL로 통일하려면:
UPDATE users
SET phone = NULL
WHERE phone = '';
프로그래밍 언어에서의 혼동
프로그래밍 언어와 SQL의 NULL 개념이 다를 수 있습니다:
| 언어 | NULL | 빈 문자열 |
|---|---|---|
| PHP | null | "" 또는 '' |
| Python | None | "" |
| JavaScript | null / undefined | "" |
| SQL | NULL | '' 또는 "" |
데이터베이스에서 NULL을 조회할 때는 == null이 아니라 IS NULL을 사용해야 합니다.
마치며
NULL과 빈 문자열은 데이터 정제와 검증에서 매우 중요한 개념입니다. 특히 사용자 입력 데이터를 다룰 때 이 둘을 구분하지 못하면 버그가 발생할 수 있습니다. 데이터베이스 설계 단계에서부터 NULL 허용 여부를 명확히 하고, 쿼리 작성 시 두 조건을 항상 의식하는 습관을 들이는 것이 좋습니다.
댓글