MySQLi - Regexps

Bạn đã thấy mẫu MySQLi khớp với LIKE ...%. MySQLi hỗ trợ một loại hoạt động so khớp mẫu khác dựa trên các biểu thức chính quy vàREGEXPnhà điều hành. Nếu bạn biết về PHP hoặc PERL, thì bạn sẽ hiểu rất đơn giản vì đối sánh này rất giống với các biểu thức chính quy trong kịch bản.

Sau đây là bảng mẫu, có thể được sử dụng cùng với REGEXP nhà điều hành.

Mẫu Những gì mẫu phù hợp
^ Bắt đầu chuỗi
$ Kết thúc chuỗi
. Bất kỳ ký tự đơn nào
[...] Bất kỳ ký tự nào được liệt kê giữa dấu ngoặc vuông
[^ ...] Bất kỳ ký tự nào không được liệt kê giữa dấu ngoặc vuông
p1 | p2 | p3 Sự luân phiên; khớp với bất kỳ mẫu p1, p2 hoặc p3 nào
* Không có hoặc nhiều trường hợp của phần tử trước
+ Một hoặc nhiều trường hợp của phần tử trước
{n} n trường hợp của phần tử trước
{m, n} m đến n trường hợp của phần tử trước

Ví dụ

Bây giờ, dựa trên bảng trên, bạn có thể thiết bị các loại truy vấn SQL khác nhau để đáp ứng yêu cầu của bạn. Đây, tôi liệt kê một số ít để bạn hiểu. Hãy xem xét chúng ta có một bảng được gọi là tutorial_inf và nó có một trường tên -

Truy vấn để tìm tất cả các tên bắt đầu bằng 'sa'

mysql>  SELECT * FROM tutorials_inf WHERE name REGEXP '^sa';

Đầu ra mẫu phải như thế này -

+----+------+
| id | name |
+----+------+
|  1 | sai  |
+----+------+
1 row in set (0.00 sec)

Truy vấn tìm tất cả các tên kết thúc bằng 'ai'

mysql> SELECT * FROM tutorials_inf WHERE name REGEXP 'ai$';

Đầu ra mẫu phải như thế này -

+----+------+
| id | name |
+----+------+
|  1 | sai  |
+----+------+
1 row in set (0.00 sec)

Truy vấn để tìm tất cả các tên có chứa 'a'

mysql> SELECT * FROM tutorials_inf WHERE name REGEXP 'a';

Đầu ra mẫu phải như thế này -

+----+-------+
| id | name  |
+----+-------+
|  1 | sai   |
|  3 | ram   |
|  4 | johar |
+----+-------+
3 rows in set (0.00 sec)

Truy vấn để tìm tất cả các tên bắt đầu bằng một nguyên âm

mysql>  SELECT * FROM tutorials_inf WHERE name REGEXP '^[aeiou]';