MySQL - Regexps
Bạn đã thấy mẫu MySQL khớp với LIKE ...%. MySQL 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ì cách đối sánh này giống như cách viết kịch bản các biểu thức chính quy.
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ố để bạn hiểu.
Hãy xem xét chúng ta có một bảng được gọi là person_tbl và nó đang có một trường được gọi là name -
Truy vấn để tìm tất cả các tên bắt đầu bằng 'st' -
mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';
Truy vấn để tìm tất cả các tên kết thúc bằng 'ok' -
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'ok$';
Truy vấn để tìm tất cả các tên, có chứa 'mar' -
mysql> SELECT name FROM person_tbl WHERE name REGEXP 'mar';
Truy vấn để tìm tất cả các tên bắt đầu bằng một nguyên âm và kết thúc bằng 'ok' -
mysql> SELECT FirstName FROM intque.person_tbl WHERE FirstName REGEXP '^[aeiou].*ok$';