MySQL에서 특정 열에 단일 단어만 포함된 레코드를 조회하고 싶다면 LIKE 연산자를 활용하면 됩니다. 핵심 아이디어는 간단합니다. 값에 공백(' ')이 없다면 그 문자열은 한 단어로만 구성되어 있다는 점입니다. 따라서 NOT LIKE '% %' 조건으로 공백이 포함된 레코드를 제외하면 원하는 결과를 얻을 수 있습니다. 아래에서 단계별 예제를 통해 자세히 살펴보겠습니다.
1단계: 테이블 생성하기
예제에 사용할 DemoTable 테이블을 먼저 생성합니다.
mysql> create table DemoTable
(
Name varchar(50)
);
Query OK, 0 rows affected (0.50 sec)
2단계: 샘플 데이터 입력하기
INSERT 명령으로 한 단어 이름과 두 단어 이름을 섞어 여러 개의 레코드를 삽입합니다.
mysql> insert into DemoTable values('John Smith');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('John');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('Adam Smith');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('Carol');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('David Miller');
Query OK, 1 row affected (0.10 sec)
3단계: 전체 레코드 확인하기
SELECT 문으로 테이블에 저장된 모든 레코드를 조회합니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+--------------+ | Name | +--------------+ | John Smith | | John | | Adam Smith | | Carol | | David Miller | +--------------+ 5 rows in set (0.00 sec)
4단계: 단일 단어 레코드만 조회하기
공백이 포함되지 않은 레코드, 즉 단일 단어로만 구성된 레코드만 조회하는 쿼리는 다음과 같습니다. 여기서 NOT LIKE '% %'를 사용해 공백을 포함한(두 단어 이상인) 레코드를 제외했습니다.
mysql> select *from DemoTable where Name not like '% %';
실행 결과는 다음과 같습니다.
+-------+ | Name | +-------+ | John | | Carol | +-------+ 2 rows in set (0.00 sec)
정리: 이처럼 NOT LIKE '% %' 패턴을 사용하면 복잡한 함수나 정규식 없이도 단일 단어 레코드를 손쉽게 필터링할 수 있습니다. 다만 탭이나 연속된 공백 등 다른 형태의 공백 문자까지 처리해야 하는 경우라면 REGEXP(예: Name NOT REGEXP '[[:space:]]')를 사용하는 편이 더 안전하고 정확합니다.