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

MySQL에서 RLIKE로 여러 단어 조건을 만족하는 레코드 조회하기

MySQL에서 하나의 컬럼에 대해 여러 단어(값)를 동시에 매칭하여 레코드를 필터링하려면 RLIKE 연산자를 사용하면 됩니다. RLIKE는 정규 표현식 기반으로 동작하며, |(OR) 기호를 이용해 여러 검색어를 한 번에 처리할 수 있습니다.

기본 문법

select * from yourTableName
    where yourColumnName rlike 'yourValue1|yourValue2';

예제 테이블 생성

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

mysql> create table DemoTable1935
    (
    Subject varchar(20)
    );
Query OK, 0 rows affected (0.00 sec)

데이터 삽입

insert 명령을 사용해 몇 개의 레코드를 삽입합니다.

mysql> insert into DemoTable1935 values('MySQL');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1935 values('Python');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1935 values('MongoDB');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1935 values('SQL Server');
Query OK, 1 row affected (0.00 sec)
mysql> insert into DemoTable1935 values('PL SQL');
Query OK, 1 row affected (0.00 sec)

전체 레코드 확인

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

mysql> select * from DemoTable1935;

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

+------------+
| Subject    |
+------------+
| MySQL      |
| Python     |
| MongoDB    |
| SQL Server |
| PL SQL     |
+------------+
5 rows in set (0.00 sec)

여러 단어로 레코드 필터링하기

이제 RLIKE를 사용해 'SQL' 또는 'Python'이 포함된 레코드만 조회하는 쿼리입니다.

mysql> select * from DemoTable1935
    where Subject rlike 'SQL|Python';

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

+------------+
| Subject    |
+------------+
| MySQL      |
| Python     |
| SQL Server |
| PL SQL     |
+------------+
4 rows in set (0.00 sec)

결과 분석

'SQL'이라는 단어가 포함된 MySQL, SQL Server, PL SQL과 'Python'이 포함된 Python 레코드가 모두 반환되었습니다. 반면 'MongoDB'는 두 조건 중 어느 것에도 해당하지 않으므로 결과에서 제외되었습니다.

참고로 RLIKE는 REGEXP와 동일한 기능을 하며, 부분 문자열 매칭 방식으로 동작하기 때문에 정확히 일치하는 값이 아니라 해당 단어가 포함된 모든 행이 조회됩니다. 정확한 일치가 필요하다면 IN 절을 사용하는 것이 더 적합합니다.