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

MySQL에서 검색어로 필드를 찾는 방법: REGEXP_INSTR 함수 활용하기

MySQL REGEXP_INSTR 함수로 검색어 조회하기

MySQL에서 특정 검색어가 포함된 필드를 찾고 싶다면 REGEXP_INSTR() 함수를 활용할 수 있습니다. 이 함수는 정규 표현식을 기반으로 문자열 내에서 패턴이 일치하는 위치를 반환하며, 일치하는 값이 있으면 0보다 큰 값을, 없으면 0을 반환합니다.

기본 문법

기본적인 사용 문법은 다음과 같습니다.

select * from yourTableName where REGEXP_INSTR(yourColumnName, yourSearchValue);

예제 테이블 생성

문법을 실제로 이해하기 위해 먼저 테이블을 생성해 보겠습니다.

mysql> create table demo64
-> (
-> id int not null auto_increment primary key,
-> name varchar(40)
-> );
Query OK, 0 rows affected (3.06 sec)

데이터 삽입

insert 명령을 사용하여 테이블에 몇 개의 레코드를 추가합니다.

mysql> insert into demo64(name) values('John Smith');
Query OK, 1 row affected (0.21 sec)

mysql> insert into demo64(name) values('John Doe');
Query OK, 1 row affected (0.15 sec)

mysql> insert into demo64(name) values('Chris Brown');
Query OK, 1 row affected (0.08 sec)

mysql> insert into demo64(name) values('David Miller');
Query OK, 1 row affected (0.20 sec)

mysql> insert into demo64(name) values('Carol Taylor');
Query OK, 1 row affected (0.10 sec)

저장된 레코드 확인

select 문을 사용하여 테이블의 모든 레코드를 조회해 보겠습니다.

mysql> select *from demo64;

위 쿼리는 다음과 같은 결과를 출력합니다.

+----+--------------+
| id | name         |
+----+--------------+
|  1 | John Smith   |
|  2 | John Doe     |
|  3 | Chris Brown  |
|  4 | David Miller |
|  5 | Carol Taylor |
+----+--------------+
5 rows in set (0.00 sec)

REGEXP_INSTR을 이용한 검색 쿼리 실행

이제 'John'이라는 검색어가 포함된 필드를 찾는 쿼리를 실행해 보겠습니다.

mysql> select *from demo64 where REGEXP_INSTR(name,'John');

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

+----+------------+
| id | name       |
+----+------------+
|  1 | John Smith |
|  2 | John Doe   |
+----+------------+
2 rows in set (0.00 sec)

결과 분석

위 출력 결과를 보면 이름에 'John'이 포함된 두 개의 레코드, 즉 John SmithJohn Doe만 반환된 것을 확인할 수 있습니다. REGEXP_INSTR 함수는 컬럼 값 안에 검색어가 포함되어 있는지 확인하므로, 부분 문자열 검색에 매우 유용합니다.

참고 사항

REGEXP_INSTR 함수는 MySQL 8.0 이상 버전에서 지원됩니다. 그 이전 버전을 사용 중이라면 LIKE 연산자나 REGEXP 연산자를 대신 사용하는 것이 좋습니다. 예를 들어 WHERE name LIKE '%John%' 또는 WHERE name REGEXP 'John'으로 동일한 결과를 얻을 수 있습니다.