MySQL cung cấp các phương thức mạnh mẽ để so khớp mẫu (pattern matching), trong đó phổ biến nhất là sử dụng LIKE với ký tự đại diện, như LIKE ‘%…%’ để tìm kiếm chuỗi ký tự. Ngoài ra, MySQL còn hỗ trợ so khớp mẫu nâng cao hơn thông qua Regular Expression (biểu thức chính quy) và toán tử REGEXP.

Nếu bạn đã quen thuộc với các ngôn ngữ lập trình như PHP hoặc Perl, việc sử dụng Regular Expression trong MySQL sẽ khá dễ dàng vì cú pháp và cách thức hoạt động của nó rất tương tự với các ngôn ngữ này.

Bảng liệt kê các Pattern được sử dụng với toán tử REGEXP

PatternSo khớp với
^Phần đầu của chuỗi
$Phần cuối của chuỗi
.Bất kỳ ký tự đơn nào
[…]Bất kỳ ký tự nào được liệt kê trong dấu ngoặc vuông
[^…]Bất kỳ ký tự nào không được liệt kê trong dấu ngoặc vuông
s1|s2|s3Bất kỳ mẫu s1, s2 hoặc s3
*0 hoặc nhiều instance (sự thể hiện) của phần tử ở trước
+1 hoặc nhiều instance (sự thể hiện) của phần tử ở trước
{n}n instance (sự thể hiện) của phần tử ở trước
{m,n}Từ m tới n instance (sự thể hiện) của phần tử ở trước

Dựa trên bảng dữ liệu, bạn có thể tạo ra nhiều kiểu truy vấn SQL đa dạng tùy theo yêu cầu cụ thể của mình. Dưới đây là một số truy vấn cơ bản và cần thiết nhất. Giả sử chúng ta có một bảng tên là wp_posts với một trường post_title, bạn có thể thực hiện các truy vấn như sau:

Truy vấn để tìm tất cả trường post_title bắt đầu với ‘^Sanh’:

SELECT post_title FROM wp_posts WHERE post_title REGEXP '^Sanh';

Truy vấn để tìm tất cả trường post_title kết thúc với ‘Sanh$’:

SELECT post_title FROM wp_posts WHERE post_title REGEXP 'Sanh$';

Truy vấn để tìm tất cả trường post_title chứa từ ‘Xinh’:

SELECT post_title FROM wp_posts WHERE post_title REGEXP 'Xinh';

Truy vấn để tìm tất cả ten bắt đầu với một nguyên âm và kết thúc với ‘ng’:

SELECT post_title FROM wp_posts WHERE post_title REGEXP '^[aeiou]|ng$';