Hướng dẫn regex mysql
Regexp trong MySQL - Biểu thức chính quy trong MySQL. Bạn đã thấy MySQL sử dụng câu lệnh có dạng (Pattern Matching) LIKE …%. MySQL cũng hỗ trợ hoạt động so khớp mẫu khác dựa trên biểu thức chính quy và toán tử REGEXP. Nếu bạn đã sử dụng Regex trong Java, thì nó là khá đơn giản để bạn hiểu về hoạt động này bởi vì việc so khớp này là khá tương tự như
các biểu thức chính quy trong các ngôn ngữ lập trình Java. Bảng dưới liệt kê các Pattern có thể được sử dụng cùng với toán tử REGEXP. Dựa vào bảng trên, bạn có thể thành lập nhiều kiểu truy vấn SQL đa dạng tùy theo yêu cầu của bạn. Ở đây, mình sẽ liệt kê một số kiểu cần thiết nhất. Giả sử chúng ta có một bảng sinhvienk60 và có một trường là ten: Truy vấn để tìm tất cả NAME bắt đầu với '^Ng': Truy vấn để tìm tất cả NAME kết thúc với 'ng$': SELECT name FROM nhanvien WHERE ten REGEXP 'ng$'; Truy vấn để tìm tất cả NAME chứa 'ao': SELECT name FROM nhanvien WHERE ten REGEXP 'ao'; Truy vấn để tìm tất cả NAME bắt đầu với một nguyên âm và kết thúc với 'nh': SELECT name FROM nhanvien WHERE ten REGEXP '^[aeiou]|nh$'; Biểu thức chính quy là gì?Biểu thức chính quy giúp tìm kiếm dữ liệu phù hợp với tiêu chí phức tạp. Nếu bạn đã từng làm việc với các ký tự đại diện trước đây, bạn có thể đặt câu hỏi là tại sao lại phải học các biểu thức chính quy trong khi bạn có thể nhận được kết quả tương tự khi sử dụng các ký tự đại diện. Bởi vì khi so sánh với ký tự đại diện, các biểu thức chính quy cho phép chúng ta tìm kiếm dữ liệu phù hợp với những tiêu chí phức tạp hơn nhiều. Cú pháp cơ bảnCú pháp cơ bản của biểu thức chính quy như sau: Trong đó:
Để thực hiện theo các ví dụ minh họa, bạn có thể tải dữ liệu myflixdb tại đây: https://drive.google.com/uc?export=download&id=0B_vqvT0ovzHccjhtdGlrZ0MtZ0k Xem xét ví dụ sau: Truy vấn trên tìm kiếm tất cả các bộ phim có từ “code” trong tựa đề. Nó không quan trọng từ “code” nằm ở đầu, giữa hay cuối tiêu đề. Miễn là có chứa từ “code” thì nó sẽ được xem xét. Giả sử rằng chúng ta muốn tìm kiếm tên phim bắt đầu bằng a,b,c hoặc d và theo sau là bất kỳ số lượng ký tự nào khác. Làm thế nào để thực hiện được điều đó? Chúng ta có thể sử dụng biểu thức chính quy cùng với các meta-characters để đạt được kết quả mong muốn. Thực hiện câu lệnh trên cho dữ liệu myflixdb trong MySQL sẽ cho ra kết quả: Bây giờ hãy xem xét kỹ các ký tự chính quy chịu trách nhiệm về kết quả trên: ‘^[abcd]’ : dấu mũ (^) có nghĩa là khớp mẫu nên được áp dụng ở vị trí đầu và charlist [abcd] có nghĩa là chỉ các tiêu đề phim bắt đầu bằng a,b,c hoặc d mới được trả về trong tập kết quả. Sửa đổi câu lệnh trên và sử dụng NOT charlist (hiển thị danh sách phim mà tiêu đề phim không bắt đầu bằng các ký tự có trong charlist) để xem kết quả : ‘^[^abcd]’ : dấu mũ (^) có nghĩa là khớp mẫu nên được áp dụng ở vị trí đầu tiên và charlist [^abcd] có nghĩa là những bộ phim có tiêu đề bắt đầu với bất kỳ ký tự a,b,c, hoặc d nào cũng đều sẽ bị loại khỏi tập kết quả trả về Meta-characters trong biểu thức chính quyNhững gì chúng ta vừa xem xét ở trên là hình thức đơn giản nhất của biểu thức chính quy. Bây giờ hãy xem xét các khớp mẫu biểu thức chính quy tiên tiến hơn. Giả sử chúng ta muốn tìm kiếm những tựa phim với mẫu “code” và chỉ sử dụng biểu thức chính quy, chúng ta sẽ làm thế nào? Câu
trả lời đó chính là meta-charecters. Chúng cho phép chúng ta hiệu chỉnh kết quả tìm kiếm mẫu bằng cách sử dụng biểu thức chính quy.
Dấu gạch chéo (\) được sử dụng để làm ký tự thoát, dùng để thoát khỏi ký tự tiếp theo. Nếu chúng ta muốn sử dụng nó như một phần của mẫu trong biểu thức chính quy, chúng ta nên sử dụng dấu gạch chéo kép (\\). Tổng kết
Ngoài ra bạn có thể truy cập ngay https://gitiho.com/ để tìm hiểu thêm nhiều các khóa học hay về tin học văn phòng: Excel, Power Point, lập trình VBA, lập trình C#, SQL, thiết kế đồ họa… Có rất nhiều ưu đãi hấp dẫn đang chờ bạn. Các bạn có thể tham khảo thêm các bài viết khác về cách sử dụng MySQL: Hướng dẫn sử dụng câu lệnh SELECT trong MySQL qua các ví dụ Hướng dẫn câu lệnh DELETE trong MySQL và ví dụ minh họa Hướng dẫn cách dùng mệnh đề WHERE trong MySQL Cùng tham gia cộng đồng hỏi đáp về chủ đề Góc chia sẻ |