Biểu thức chính quy (Regular Expression) trong MariaDB
Ngoài việc so khớp mẫu thông qua mệnh đề LIKE, MariaDB còn cung cấp tính năng so khớp mẫu nâng cao với toán tử REGEXP (Regular Expression). Toán tử này cho phép thực hiện các thao tác so khớp mẫu trên chuỗi dựa trên một biểu thức mẫu được cung cấp.
Bắt đầu từ phiên bản MariaDB 10.0.5, MariaDB hỗ trợ Biểu thức Chính quy PCRE (Perl Compatible Regular Expressions), mở rộng khả năng so khớp mẫu với các tính năng như mẫu đệ quy, look-ahead assertions, và nhiều tính năng khác.
Cú pháp REGEXP trong MariaDB
Cú pháp cơ bản của toán tử REGEXP:
SELECT column FROM table_name WHERE column REGEXP '[MẪU]';
Toán tử REGEXP trả về:
Bài viết này được đăng tại [free tuts .net]
- 1: Nếu chuỗi khớp với mẫu.
- 0: Nếu chuỗi không khớp với mẫu.
Ngoài ra, có thể sử dụng toán tử phủ định dưới dạng NOT REGEXP. Để tăng tính tương thích, MariaDB cung cấp các từ đồng nghĩa:
- RLIKE tương đương với REGEXP.
- NOT RLIKE tương đương với NOT REGEXP.
Cách hoạt động của REGEXP
-
Mẫu cần so khớp có thể là:
- Một chuỗi ký tự cố định.
- Một cột trong bảng.
-
Với các chuỗi, MariaDB sử dụng cú pháp thoát ký tự theo ngôn ngữ C. Vì vậy, cần lặp lại dấu gạch chéo ngược (
\
) khi sử dụng chúng. -
Mặc định, so khớp REGEXP không phân biệt chữ hoa chữ thường (trừ khi làm việc với chuỗi nhị phân - binary strings).
Các mẫu ký tự thường dùng trong REGEXP
STT | Mẫu ký tự | Mô tả |
---|---|---|
1 | ^ |
So khớp với phần đầu của chuỗi. |
2 | $ |
So khớp với phần cuối của chuỗi. |
3 | . |
So khớp với một ký tự bất kỳ. |
4 | [...] |
So khớp với bất kỳ ký tự nào bên trong dấu ngoặc vuông. |
5 | [^...] |
So khớp với bất kỳ ký tự nào không nằm trong dấu ngoặc vuông. |
6 | `p1 | p2 |
7 | * |
So khớp 0 hoặc nhiều lần ký tự hoặc mẫu liền trước đó. |
8 | + |
So khớp 1 hoặc nhiều lần ký tự hoặc mẫu liền trước đó. |
9 | {n} |
So khớp chính xác n lần ký tự hoặc mẫu liền trước đó. |
10 | {m,n} |
So khớp từ m đến n lần ký tự hoặc mẫu liền trước đó. |
Ví dụ sử dụng REGEXP trong MariaDB
Các sản phẩm bắt đầu bằng “pr”:
SELECT name FROM product_tbl WHERE name REGEXP '^pr';
Các sản phẩm kết thúc bằng “na”:
SELECT name FROM product_tbl WHERE name REGEXP 'na$';
Các sản phẩm bắt đầu bằng nguyên âm:
SELECT name FROM product_tbl WHERE name REGEXP '^[aeiou]';
Kết bài
Biểu thức chính quy (REGEXP) trong MariaDB là công cụ mạnh mẽ để so khớp và lọc dữ liệu dựa trên các mẫu phức tạp. Việc sử dụng REGEXP mang lại sự linh hoạt vượt trội so với các phương pháp so khớp đơn giản như LIKE, đặc biệt khi xử lý các mẫu đòi hỏi cấu trúc hoặc mẫu ký tự cụ thể. Đây là công cụ không thể thiếu khi bạn cần thao tác dữ liệu nâng cao trong các ứng dụng và hệ thống cơ sở dữ liệu.