Bài 19: Sử dụng Regular expression trong MYSQL
Trong loạt các bài viết trước mình đã viết về Regular Expression . Trong bài viết này mình sẽ nói về Regular expression được sử dụng thế nào trong truy vấn dữ liệu. Mình sẽ nhắc lại một số ký hiệu Meta được sử dụng trong MySQL. Những ký tự này mình đã trình bày tại các quy tắc cơ bản của ...
Trong loạt các bài viết trước mình đã viết về Regular Expression. Trong bài viết này mình sẽ nói về Regular expression được sử dụng thế nào trong truy vấn dữ liệu.
Mình sẽ nhắc lại một số ký hiệu Meta được sử dụng trong MySQL. Những ký tự này mình đã trình bày tại các quy tắc cơ bản của regular expression được sử dụng trong PHP.
STT | Ký hiệu | Ý nghĩa |
1 | ^ | Tìm kiếm giá trị từ đầu chuỗi nguồn |
2 | $ | Tìm kiếm giá trị từ cuối chuỗi nguồn |
3 | . | Đại diện cho một ký tự bất ký |
4 | * | 0 hoặc nhiều lần xuất hiện |
5 | + | 1 hoặc nhiều lần xuất hiện |
6 | ? | 0 hoặc 1 lần xuất hiện |
7 | | | Sự lựa chọn |
8 | {n,m} | Số lần xuất hiện của ký tự từ n đến m lần |
Sử dụng biểu thức chính quy trong MySQL được chia thành 3 nhóm từ khóa sau:
- NOT_REGEXP
- REGEXP
- RLIKE
Trong nội dung này trình bày việc sử dụng biểu thức chính quy với từ khóa REGEXP.
Kết quả tìm kiếm sẽ trả về 1 nếu tìm thấy hoặc trả về 0 nếu không tìm thấy.
1. Ký hiệu ^ : tìm từ đầu chuỗi nguồn
SELECT 'MySQL is easy' REGEXP '^Mya';
2. Ký hiệu $ : tìm từ cuối chuỗi nguồn
SELECT 'MySQL is easy 1' REGEXP 'easy$';
3. Ký hiệu . : đại diện một ký tự bất kỳ
SELECT 'MySQL' REGEXP '^M.SQL$';
4. Ký hiệu * : ký tự xuất hiện 0 hoặc nhiều lần
SELECT 'MyyyySQL' REGEXP '^M.*SQL$'; -- MSQL
SELECT 'MyyyySQL' REGEXP '^M....SQL$';
5. Ký hiệu + : ký tự xuất hiện 1 hoặc nhiều lần
SELECT 'MyyyySQL' REGEXP '^M.+SQL$'; -- M.SQL M..SQL
6. Ký hiệu ? : ký tự xuất hiện 0 hoặc 1 lần
SELECT 'MyyyySQL' REGEXP '^M.?SQL$'; -- MSQL M.SQL
7. Ký hiệu | : sự lựa chọn (hoặc)
SELECT 'Mi' REGEXP '^(My|Mi)$';
8. {n.m} Số lần xuất hiện của ký tự
- a* tương đương a{0}
- a+ tương đương a{1};
- a? tương đương a{0,1}
SELECT 'abcdbcde' REGEXP 'a(bcd){1,5}e'; -- abcde abcdbcde
Tổng kết.
Nếu bạn đã tìm hiểu về Regular expression thì trên đây là những quy tắc không có gì lạ cả. Ở mỗi ngôn ngữ thì nó có cách viết và sử dụng khác nhau. Nhưng chung quy lại nó đều giống nhau mà thôi :)