MySQL에서 구두점이 있어도 쿼리 일치시키기
데이터에 쉼표(,)나 느낌표(!) 같은 구두점이 포함되어 있어도 검색 결과를 정확히 찾고 싶다면 MySQL의 LIKE 연산자를 사용하면 됩니다. LIKE 연산자와 와일드카드(%)를 함께 활용하면 구두점 여부와 관계없이 원하는 문자열을 손쉽게 매칭할 수 있습니다.
예제를 통해 실제 동작 방식을 살펴보겠습니다.
1. 테이블 생성하기
먼저 예제에 사용할 테이블을 생성합니다.
mysql> create table DemoTable
-> (
-> Comments varchar(20)
-> );
Query OK, 0 rows affected (1.10 sec)
2. 데이터 삽입하기
INSERT 명령을 사용해 구두점이 포함된 레코드들을 추가합니다.
mysql> insert into DemoTable values('Good,Morning');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable values('Nice');
Query OK, 1 row affected (0.51 sec)
mysql> insert into DemoTable values('good,bye!');
Query OK, 1 row affected (0.11 sec)3. 전체 레코드 확인하기
SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.
mysql> select *from DemoTable;
위 쿼리는 다음과 같은 결과를 출력합니다.
+--------------+
| Comments |
+--------------+
| Good,Morning |
| Nice |
| good,bye! |
+--------------+
3 rows in set (0.00 sec)
4. LIKE 연산자로 구두점 무시하고 검색하기
이제 구두점이 포함되어 있어도 'good'이라는 단어가 들어간 모든 레코드를 찾는 쿼리입니다. 와일드카드 %를 앞뒤로 붙여주면 문자열 중간에 있는 구두점과 상관없이 일치하는 데이터를 반환합니다.
mysql> select *from DemoTable where Comments like '%good%';
실행 결과는 다음과 같습니다.
+--------------+
| Comments |
+--------------+
| Good,Morning |
| good,bye! |
+--------------+
2 rows in set (0.00 sec)
결과를 보면 'Good,Morning'과 'good,bye!' 두 개의 레코드가 정상적으로 조회된 것을 확인할 수 있습니다. 이처럼 %good% 패턴을 사용하면 대소문자 구분 없이(MySQL 기본 콜레이션 기준) 구두점이 포함된 문자열도 문제없이 매칭됩니다.