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

MySQL에서 빈 값과 NULL 값을 함께 조회하는 쿼리 방법

MySQL에서 빈 문자열과 NULL 값 동시에 조회하기

MySQL에서 NULL 여부를 확인하려면 IS NULL 연산자를 사용하고, 빈 값(빈 문자열 '')은 빈 문자열과 직접 비교해야 합니다. 이 두 가지 조건을 OR로 결합하면 NULL과 빈 값을 한 번의 쿼리로 함께 조회할 수 있습니다. 아래 예제를 통해 자세히 살펴보겠습니다.

1. 테이블 생성

먼저 예제에 사용할 테이블을 만들어 보겠습니다.

mysql> create table DemoTable691(
PlayerId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
PlayerName varchar(100),
PlayerScore int
);
Query OK, 0 rows affected (0.56 sec)

2. 데이터 삽입

insert 명령을 사용해 테이블에 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable691(PlayerName,PlayerScore) values('Robert',56);
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable691(PlayerName,PlayerScore) values('David',89);
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable691(PlayerName,PlayerScore) values('',98);
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable691(PlayerName,PlayerScore) values(null,71);
Query OK, 1 row affected (0.17 sec)

여기서 세 번째 레코드에는 빈 문자열('')을, 네 번째 레코드에는 NULL을 저장했다는 점에 주목하세요. MySQL에서는 이 둘이 서로 다른 값으로 처리됩니다.

3. 전체 데이터 확인

select 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable691;

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

+----------+------------+-------------+
| PlayerId | PlayerName | PlayerScore |
+----------+------------+-------------+
| 1 | Robert | 56 |
| 2 | David | 89 |
| 3 | | 98 |
| 4 | NULL | 71 |
+----------+------------+-------------+
4 rows in set (0.00 sec)

4. 빈 값과 NULL 값을 함께 조회하는 쿼리

다음은 빈 값과 NULL 값을 함께 표시하는 MySQL 쿼리입니다.

mysql> select *from DemoTable691 where PlayerName IS NULL OR PlayerName='';

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

+----------+------------+-------------+
| PlayerId | PlayerName | PlayerScore |
+----------+------------+-------------+
| 3 | | 98 |
| 4 | NULL | 71 |
+----------+------------+-------------+
2 rows in set (0.00 sec)

결과에서 확인할 수 있듯이, PlayerName IS NULL OR PlayerName='' 조건을 사용하면 빈 문자열이 저장된 레코드와 NULL이 저장된 레코드가 모두 정상적으로 조회됩니다. 이처럼 MySQL에서는 NULL과 빈 문자열을 별개의 값으로 취급하기 때문에, 두 경우를 모두 처리하려면 반드시 두 조건을 함께 지정해 주어야 합니다.