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

MySQL에서 문자열의 왼쪽과 중간에 있는 '%' 문자를 이스케이프하는 방법

MySQL에서 '%' 문자 이스케이프하기

MySQL의 LIKE 연산자에서 %는 임의의 문자열과 일치하는 와일드카드로 해석됩니다. 따라서 컬럼 값에 실제 '%' 문자가 포함되어 있고 이를 그대로 검색하려면, 백슬래시(\%)로 이스케이프 처리해야 합니다. 이 글에서는 예제 테이블을 만들고 문자열의 왼쪽(시작), 중간, 끝에 있는 '%' 문자를 이스케이프하여 조회하는 방법을 단계별로 살펴봅니다.

1. 예제 테이블 생성

먼저 테이블을 생성합니다.

mysql> create table DemoTable629 (StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,StudentSubject text);
Query OK, 0 rows affected (0.77 sec)

2. 샘플 데이터 삽입

insert 명령으로 '%' 문자가 다양한 위치에 포함된 레코드를 삽입합니다.

mysql> insert into DemoTable629(StudentSubject) values('MySQL%');
Query OK, 1 row affected (0.15 sec)
mysql> insert into DemoTable629(StudentSubject) values('Spring%Hibernate');
Query OK, 1 row affected (0.16 sec)
mysql> insert into DemoTable629(StudentSubject) values('%Java');
Query OK, 1 row affected (0.21 sec)

3. 전체 데이터 확인

select 문으로 테이블의 모든 레코드를 조회합니다.

mysql> select *from DemoTable629;

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

+-----------+------------------+
| StudentId | StudentSubject   |
+-----------+------------------+
|         1 | MySQL%           |
|         2 | Spring%Hibernate |
|         3 | %Java            |
+-----------+------------------+
3 rows in set (0.00 sec)

4. '%' 문자 이스케이프 쿼리

문자열 끝에 있는 '%'를 찾으려면 LIKE 패턴에서 \%와 같이 백슬래시로 이스케이프합니다.

mysql> select *from DemoTable629
   where StudentSubject like '%\%';

'%\%' 패턴은 “임의의 문자열 뒤에 리터럴 %가 오는 경우”, 즉 % 문자로 끝나는 레코드만 일치시킵니다. 실행 결과는 다음과 같습니다.

+-----------+----------------+
| StudentId | StudentSubject |
+-----------+----------------+
|         1 | MySQL%         |
+-----------+----------------+
1 row in set (0.00 sec)

5. 위치별 이스케이프 패턴 정리

  • 문자열 끝의 % 검색: LIKE '%\%'
  • 문자열 시작(왼쪽)의 % 검색: LIKE '\%%'
  • 문자열 중간의 % 검색: LIKE '%\%%'

예를 들어 왼쪽에 %가 있는 '%Java'를 찾으려면 다음과 같이 작성할 수 있습니다.

mysql> select *from DemoTable629
   where StudentSubject like '\%%';

참고: ESCAPE 절로 다른 이스케이프 문자 지정하기

백슬래시 대신 다른 문자를 이스케이프 문자로 사용하고 싶다면 ESCAPE 절을 활용할 수 있습니다.

mysql> select *from DemoTable629
   where StudentSubject like '%!%' escape '!';

이처럼 와일드카드인 %를 일반 문자로 취급해야 할 때는 반드시 이스케이프 처리를 해주어야 원하는 조건에 맞는 결과를 정확하게 얻을 수 있습니다.