Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

MySQL REGEXP 연산자는 무엇이며 패턴 일치를 어떻게 처리합니까?


MySQL은 정규식 및 REGEXP 를 기반으로 하는 다른 유형의 패턴 일치 작업을 지원합니다. 운영자. 다음은 REGEXP 와 함께 사용할 수 있는 패턴 표입니다. 패턴 일치를 처리하는 연산자입니다.

패턴
패턴이 일치하는 항목

^
문자열 시작
$
문자열 끝
.
단일 문자
[...]
대괄호 사이에 나열된 모든 문자
[^...]
대괄호 사이에 나열되지 않은 모든 문자
p1|p2|p3
교체; p1, p2 또는 p3 패턴 중 하나와 일치
*
앞 요소의 0개 이상의 인스턴스
+
이전 요소의 하나 이상의 인스턴스
{n}
이전 요소의 n개 인스턴스
{m,n} 이전 요소의 인스턴스 m에서 n까지


예시

REGEXP 사용을 설명하기 위해 다음 데이터가 있는 'Student_info' 테이블을 사용하고 있습니다 -

mysql> Select * from Student_info;
+------+---------+------------+------------+
| id   | Name    | Address    | Subject    |
+------+---------+------------+------------+
|  101 | YashPal | Amritsar   | History    |
|  105 | Gaurav  | Chandigarh | Literature |
|  130 | Ram     | Jhansi     | Computers  |
|  132 | Shyam   | Chandigarh | Economics  |
|  133 | Mohan   | Delhi      | Computers  |
+------+---------+------------+------------+
5 rows in set (0.00 sec)

이제 다음은 REGEXP를 사용하여 위의 표에서 '이름'의 패턴을 찾는 몇 가지 쿼리입니다. -

mysql> Select Name from student_info WHERE Name REGEXP '^Y';
+---------+
| Name    |
+---------+
| YashPal |
+---------+
1 row in set (0.11 sec)

위의 쿼리는 'Y'로 시작하는 모든 이름을 찾습니다.

mysql> Select name from student_info WHERE Name REGEXP 'am$';
+-------+
| name  |
+-------+
| Ram   |
| Shyam |
+-------+
2 rows in set (0.00 sec)

위의 쿼리는 'am'으로 끝나는 모든 이름을 찾습니다.

mysql> Select name from student_info WHERE Name REGEXP 'av';
+--------+
| name   |
+--------+
| Gaurav |
+--------+
1 row in set (0.00 sec)

위의 쿼리는 'av'가 포함된 모든 이름을 찾습니다.

mysql> Select name from student_info WHERE Name REGEXP '^[aeiou]|am$';
+-------+
| name  |
+-------+
| Ram   |
| Shyam |
+-------+
2 rows in set (0.00 sec)

위의 쿼리는 모음으로 시작하여 'am'으로 끝나는 모든 이름을 찾습니다.