Bài 19: Sử dụng Regular expression trong MYSQL

Học Mysql 25/02/2017 07:00 1023
Regular Expression là một dạng biểu thức chính quy và thường được dùng để xử lý các vấn đề liên quan tới chuỗi trong MYSQL, trong bài Sử dụng Regular Expression trong MYSQL thì Aki sẽ giới thiệu cho các bạn danh sách các ký hiệu regular phổ biến nhất.

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

 

 

Xem Thêm

Profile photo of adminTheHalfHeart

B.V.T

Sinh ra và lớn nên ở Bắc Giang. Hiện tại thì tôi đang là một lập trình viên tại VietISO. Tôi lập website này với mục đích là bookmark những gì tôi đã đọc qua và mong muốn chia sẻ những gì tôi biết.