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

MySQL에서 단일 단어로 구성된 레코드만 조회하는 방법

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:]]')를 사용하는 편이 더 안전하고 정확합니다.