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

MySQL에서 특정 문자가 두 번 포함된 레코드 조회하기

MySQL에서는 LIKE 연산자와 와일드카드 패턴을 조합하면 특정 문자가 두 번 이상 포함된 레코드를 손쉽게 조회할 수 있습니다. 이 글에서는 예제 테이블을 만들고, 문자 "e"가 두 번 등장하는 레코드만 추출하는 방법을 단계별로 살펴보겠습니다.

1. 테이블 생성

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

mysql> create table DemoTable
-> (
-> Words text
-> );
Query OK, 0 rows affected (0.54 sec)

2. 샘플 데이터 삽입

INSERT 명령을 사용해 몇 개의 레코드를 추가합니다.

mysql> insert into DemoTable values('Ever');
Query OK, 1 row affected (0.18 sec)

mysql> insert into DemoTable values('Forever');
Query OK, 1 row affected (0.13 sec)

mysql> insert into DemoTable values('Good');
Query OK, 1 row affected (0.14 sec)

mysql> insert into DemoTable values('Never');
Query OK, 1 row affected (0.12 sec)

3. 전체 레코드 확인

SELECT 문으로 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from DemoTable;

출력 결과

+---------+
| Words |
+---------+
| Ever |
| Forever |
| Good |
| Never |
+---------+
4 rows in set (0.00 sec)

4. 특정 문자가 두 번 포함된 레코드 조회

특정 문자가 두 번 포함된 레코드를 가져오려면 LIKE 패턴에 해당 문자를 두 번 배치하면 됩니다. 아래 쿼리는 문자 "e"가 두 번 나타나는 레코드를 검색하는 예제입니다.

mysql> select *from DemoTable where Words LIKE '%e%e%';

출력 결과

+---------+
| Words |
+---------+
| Ever |
| Forever |
| Never |
+---------+
3 rows in set (0.00 sec)

패턴 동작 원리

여기서 사용한 패턴 '%e%e%'의 의미는 다음과 같습니다.

%는 임의의 문자열(길이 0 포함)을 의미하므로, 이 패턴은 "앞에 어떤 문자열이 오든 'e'가 한 번 나오고, 다시 어떤 문자열이 온 뒤 또 'e'가 한 번 더 나오는" 경우와 일치합니다. 즉, 문자 "e"가 최소 두 번 포함된 모든 문자열을 찾아냅니다.

결과적으로 "Ever", "Forever", "Never"는 "e"가 두 번 이상 포함되어 조회되었고, "e"가 없는 "Good"은 결과에서 제외된 것을 확인할 수 있습니다. 같은 방식으로 패턴의 문자만 바꾸면 특정 문자가 세 번 이상 포함된 레코드도 '%a%a%a%'처럼 확장하여 조회할 수 있습니다.