MySQL에서 NOT NULL 여부를 확인하고 1 또는 0으로 표시하기
MySQL에서 특정 값이 NOT NULL인지 확인한 후, 조건에 따라 1 또는 0을 반환하려면 IS NOT NULL 연산자와 IF() 함수를 함께 사용하면 됩니다.
기본 문법
기본적인 문법은 다음과 같습니다.
select if('값' is not NULL, 1, 0) as 별칭이름;실제로 동작하는 쿼리 예시입니다.
mysql> select if('' is not NULL,1,0);위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다. 빈 문자열('')은 NULL이 아니므로 결과로 1이 반환되는 것을 확인할 수 있습니다.
+------------------------+
| if('' is not NULL,1,0) |
+------------------------+
| 1 |
+------------------------+
1 row in set (0.00 sec)테이블 생성으로 직접 확인해 보기
위 문법의 동작 원리를 이해하기 위해 실제 테이블을 만들어 테스트해 보겠습니다.
1. 테이블 생성
mysql> create table DemoTable1915
(
Name varchar(20)
);
Query OK, 0 rows affected (0.00 sec)2. 데이터 삽입
INSERT 명령을 사용해 몇 개의 레코드를 추가합니다. 일반 문자열뿐만 아니라 빈 문자열과 NULL 값도 함께 넣어 차이를 비교해 보겠습니다.
mysql> insert into DemoTable1915 values('Chris');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1915 values('');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1915 values('David');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1915 values(NULL);
Query OK, 1 row affected (0.00 sec)3. 전체 레코드 조회
SELECT 문으로 테이블의 모든 레코드를 확인합니다.
mysql> select * from DemoTable1915;
실행 결과는 다음과 같습니다.
+-------+ | Name | +-------+ | Chris | | | | David | | NULL | +-------+ 4 rows in set (0.00 sec)
IF() 함수로 NOT NULL 값에 1 설정하기
이제 IF() 함수와 IS NOT NULL을 조합하여, NULL이 아닌 값에는 1을, NULL인 값에는 0을 반환하는 쿼리를 작성해 보겠습니다.
mysql> select if(Name IS NOT NULL,1,0) as Result from DemoTable1915;
실행 결과는 다음과 같습니다.
+--------+ | Result | +--------+ | 1 | | 1 | | 1 | | 0 | +--------+ 4 rows in set (0.00 sec)
결과 분석 및 핵심 정리
출력 결과를 보면 중요한 점을 알 수 있습니다. 'Chris', ''(빈 문자열), 'David'는 모두 NULL이 아니기 때문에 1이 반환되었고, 오직 NULL 값만 0이 반환되었습니다.
즉, MySQL에서 빈 문자열('')은 NULL과 다른 값이라는 점을 기억해야 합니다. 많은 초보 개발자들이 빈 문자열과 NULL을 혼동하지만, IS NOT NULL 연산자는 두 값을 명확하게 구분해 줍니다.
IF(조건, 참일 때 값, 거짓일 때 값): 조건이 참이면 첫 번째 값을, 거짓이면 두 번째 값을 반환합니다.IS NOT NULL: 값이 NULL인지 아닌지를 판별하는 유일한 방법입니다. (= NULL,!= NULL비교는 올바르게 작동하지 않습니다.)
이 방식은 데이터 검증, 리포트 생성, 조건부 집계 등 NULL 처리가 필요한 다양한 상황에서 유용하게 활용할 수 있습니다.