Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Toán tử REGEXP trong MySQL và cách xử lý so khớp mẫu

MySQL hỗ trợ so khớp mẫu dựa trên biểu thức chính quy qua toán tử REGEXP. Bảng dưới liệt kê các mẫu thường dùng:

MẫuÝ nghĩa
^Đầu chuỗi
$Cuối chuỗi
.Bất kỳ ký tự đơn nào
[...]Bất kỳ ký tự nào trong ngoặc vuông
[^...]Bất kỳ ký tự nào không trong ngoặc vuông
p1|p2|p3Lựa chọn: khớp p1 hoặc p2 hoặc p3
*0 hoặc nhiều lần phần tử trước
+1 hoặc nhiều lần phần tử trước
{n}Chính xác n lần phần tử trước
{m,n}Từ m đến n lần phần tử trước

Ví dụ

Bảng Student_info có dữ liệu:

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)

Các truy vấn dùng REGEXP trên cột Name:

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

Tìm tên bắt đầu bằng Y.

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

Tìm tên kết thúc bằng am.

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

Tìm tên chứa av.

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

Tìm tên bắt đầu bằng nguyên âm HOẶC kết thúc bằng am.