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

MySQL에서 특수 문자가 포함된 문자열을 조회하는 방법

MySQL에서 데이터를 다루다 보면 아포스트로피(')와 같은 특수 문자가 포함된 문자열을 검색해야 하는 경우가 있습니다. 이럴 때는 REPLACE() 함수와 LIKE 연산자를 조합하면 간단하게 해결할 수 있습니다. 예제를 통해 단계별로 살펴보겠습니다.

1. 테이블 생성

먼저 실습에 사용할 테이블을 생성합니다.

mysql> create table DemoTable
(
    Title text
);
Query OK, 0 rows affected (0.66 sec)

2. 샘플 데이터 삽입

insert 명령을 사용하여 특수 문자(아포스트로피)가 포함된 레코드들을 삽입합니다.

mysql> insert into DemoTable values('MySQL');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable values('MongoDB\'s');
Query OK, 1 row affected (0.17 sec)
mysql> insert into DemoTable values('MySQL\'s');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('Java\'s');
Query OK, 1 row affected (0.24 sec)

3. 전체 데이터 확인

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

mysql> select *from DemoTable;

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

+-----------+
| Title      |
+-----------+
| MySQL      |
| MongoDB's |
| MySQL's    |
| Java's     |
+-----------+
4 rows in set (0.00 sec)

4. 특수 문자가 포함된 문자열 검색하기

핵심은 REPLACE() 함수입니다. REPLACE(Title, '''', '')는 Title 컬럼 값에서 모든 작은따옴표(')를 제거한 문자열을 반환합니다. 이 결과를 LIKE 연산자로 비교하면, 원본 데이터에 특수 문자가 포함되어 있어도 원하는 문자열을 정확히 찾을 수 있습니다.

mysql> select *from DemoTable where replace(Title, '''', '') like '%MySQLs%';

위 쿼리를 실행하면 다음과 같은 결과가 출력됩니다.

+---------+
| Title   |
+---------+
| MySQL's |
+---------+
1 row in set (0.00 sec)

이처럼 REPLACE() 함수로 검색 대상 컬럼에서 특수 문자를 임시로 제거한 뒤 비교하면, 'MySQL's'처럼 아포스트로피가 포함된 레코드도 손쉽게 조회할 수 있습니다. 이 기법은 따옴표 외에도 하이픈(-), 콤마(,) 등 다양한 특수 문자 처리에 응용할 수 있습니다.