Sử dụng Regular expression trong MYSQL

Bình luận · 277 Lượt xem

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 MySQ

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.

STTKý 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

1
SELECT 'MySQL is easy' REGEXP '^Mya';

2. Ký hiệu $ : tìm từ cuối chuỗi nguồn

1
SELECT 'MySQL is easy 1' REGEXP 'easy$';

3. Ký hiệu . : đại diện một ký tự bất kỳ

1
SELECT 'MySQL' REGEXP '^M.SQL$';

4. Ký hiệu * : ký tự xuất hiện 0 hoặc nhiều lần

1
2
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

1
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

1
SELECT 'MyyyySQL' REGEXP '^M.?SQL$'; -- MSQL M.SQL

7.  Ký hiệu | : sự lựa chọn (hoặc)

1
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}
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 :)

Bình luận