MySQL에서 특정 컬럼의 값에 공백(빈 칸)이 포함되지 않은 레코드만 조회하고 싶다면 NOT LIKE 연산자를 사용하면 됩니다. 이 글에서는 예제 테이블을 만들고, 공백이 없는 데이터만 추출하는 과정을 단계별로 살펴보겠습니다.
1. 예제 테이블 생성
먼저 실습에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
(
Id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
StudentFullName varchar(40)
);
Query OK, 0 rows affected (0.66 sec)2. 샘플 데이터 삽입
INSERT 문을 사용해 학생 이름 데이터를 입력합니다. 일부 값에는 공백이 있고, 일부 값에는 공백이 없도록 구성했습니다.
mysql> insert into DemoTable(StudentFullName) values('JohnSmith');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(StudentFullName) values('John Doe');
Query OK, 1 row affected (0.18 sec)
mysql> insert into DemoTable(StudentFullName) values('Adam Smith');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable(StudentFullName) values('CarolTaylor');
Query OK, 1 row affected (0.19 sec)3. 전체 데이터 확인
SELECT 문으로 테이블에 저장된 모든 레코드를 조회해 보겠습니다.
mysql> select * from DemoTable;
실행 결과는 다음과 같습니다.
+----+-----------------+ | Id | StudentFullName | +----+-----------------+ | 1 | JohnSmith | | 2 | John Doe | | 3 | Adam Smith | | 4 | CarolTaylor | +----+-----------------+ 4 rows in set (0.00 sec)
4. 공백이 포함되지 않은 값만 조회하기
핵심은 NOT LIKE '% %' 조건입니다. 와일드카드 사이에 공백 하나를 넣어 "공백을 포함하는 값"을 제외시키는 원리입니다.
mysql> select *from DemoTable where StudentFullName NOT LIKE '% %';
실행 결과는 다음과 같습니다.
+----+-----------------+ | Id | StudentFullName | +----+-----------------+ | 1 | JohnSmith | | 4 | CarolTaylor | +----+-----------------+ 2 rows in set (0.18 sec)
결과 분석
위 결과를 보면 'John Doe'와 'Adam Smith'처럼 이름과 성 사이에 공백이 있는 레코드는 제외되고, 'JohnSmith'와 'CarolTaylor'처럼 공백 없이 붙여 쓴 이름만 조회된 것을 확인할 수 있습니다.
NOT LIKE '% %' 패턴에서 %는 임의의 문자열을 의미하므로, 문자열 중간 어디에든 공백이 하나라도 존재하면 해당 레코드는 결과에서 제외됩니다. 반대로 공백이 포함된 값만 조회하고 싶다면 LIKE '% %'를 사용하면 됩니다.