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

MySQL LIKE 쿼리로 % 문자가 포함된 열 값 검색하는 방법

MySQL에서 LIKE 연산자는 패턴 매칭에 사용되며, %는 와일드카드 문자로 해석됩니다. 따라서 열 값에 실제로 포함된 % 문자를 검색하려면 백슬래시(\)로 이스케이프 처리해야 합니다.

기본 문법

%가 포함된 열 값을 검색하려면 다음과 같은 문법을 사용합니다.

SELECT * FROM yourTableName
WHERE yourColumnName LIKE '\%%';

여기서 \%는 와일드카드가 아닌 리터럴 % 문자를 의미하며, 뒤의 %는 임의의 문자열과 매칭되는 와일드카드입니다.

예제 테이블 생성

먼저 예제에 사용할 테이블을 생성해 보겠습니다.

mysql> CREATE TABLE DemoTable1497
    -> (
    -> Name varchar(20)
    -> );
Query OK, 0 rows affected (0.55 sec)

데이터 삽입

INSERT 문을 사용하여 % 문자를 포함한 레코드와 그렇지 않은 레코드를 함께 삽입합니다.

mysql> INSERT INTO DemoTable1497 VALUES('%JohnSmith');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable1497 VALUES('DavidMiller');
Query OK, 1 row affected (0.18 sec)
mysql> INSERT INTO DemoTable1497 VALUES('CarolTaylor%');
Query OK, 1 row affected (0.16 sec)
mysql> INSERT INTO DemoTable1497 VALUES('%DavidMiller');
Query OK, 1 row affected (0.12 sec)

전체 데이터 확인

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

mysql> SELECT * FROM DemoTable1497;

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

+--------------+
| Name         |
+--------------+
| %JohnSmith   |
| DavidMiller  |
| CarolTaylor% |
| %DavidMiller |
+--------------+
4 rows in set (0.00 sec)

% 문자 검색 쿼리 실행

이제 이스케이프 처리된 \%를 사용하여 이름이 % 문자로 시작하는 행을 검색합니다.

mysql> SELECT * FROM DemoTable1497
    -> WHERE Name LIKE '\%%';

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

+--------------+
| Name         |
+--------------+
| %JohnSmith   |
| %DavidMiller |
+--------------+
2 rows in set (0.00 sec)

결과 분석

위 결과를 보면 % 문자로 시작하는 두 개의 행만 반환된 것을 확인할 수 있습니다. 참고로 'CarolTaylor%'처럼 %가 끝에 있는 값은 이 쿼리 조건에 해당하지 않아 제외되었습니다. 만약 % 위치와 관계없이 % 문자를 포함한 모든 값을 검색하고 싶다면 LIKE '%\%%'처럼 앞뒤에 와일드카드를 추가하면 됩니다.