REGEXP_LIKE trong MySQL 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. Chúng tôi đã xem xét các ký tự đại diện trong hướng dẫn trước. 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ể hỏi tại sao phải học các biểu thức chính quy khi bạn có thể nhận được kết quả tương tự bằng cách sử dụng các ký tự đại diện. Bởi vì, so với ký tự đại diện, biểu thức chính quy cho phép chúng tôi tìm kiếm dữ liệu phù hợp với tiêu chí phức tạp hơn

Cú pháp cơ bản

Cú pháp cơ bản cho một biểu thức chính quy như sau

SELECT statements.. WHERE fieldname REGEXP 'pattern';

NƠI ĐÂY -

  • “Câu lệnh SELECT…” là câu lệnh SELECT tiêu chuẩn
  • “WHERE fieldname” là tên của cột mà biểu thức chính quy sẽ được thực hiện trên đó
  • “REGEXP 'mẫu'" REGEXP là toán tử biểu thức chính quy và 'mẫu' đại diện cho mẫu được khớp bởi REGEXP. RLIKE là từ đồng nghĩa với REGEXP và đạt được kết quả tương tự như REGEXP. Để tránh nhầm lẫn nó với toán tử LIKE, tốt hơn là sử dụng REGEXP thay thế

Bây giờ chúng ta hãy xem một ví dụ thực tế-

SELECT * FROM `movies` WHERE `title` REGEXP 'code';

Truy vấn trên tìm kiếm tất cả các tiêu đề phim có mã từ trong đó. Không quan trọng “mã” ở đầu, giữa hay cuối tiêu đề. Miễn là nó được chứa trong tiêu đề thì nó sẽ được xem xét

Giả sử rằng chúng ta muốn tìm kiếm các bộ phim bắt đầu bằng a, b, c hoặc d , theo sau là bất kỳ số lượng ký tự nào khác, chúng ta sẽ thực hiện như thế nào để đạt được điều đó. Chúng ta có thể sử dụng biểu thức chính quy cùng với các siêu ký tự để đạt được kết quả mong muốn

SELECT * FROM `movies` WHERE `title` REGEXP '^[abcd]';

Thực thi đoạn mã trên trong bàn làm việc của MySQL đối với myflixdb mang lại cho chúng tôi các kết quả sau














movie_id






title






director






year_released






category_id
















4






Code Name Black






Edgar Jimz






2010






NULL
















5






Daddy's Little Girls






NULL






2007






8
















6






Angels and Demons






NULL






2007






6
















7






Davinci Code






NULL






2007






6













Bây giờ chúng ta hãy xem xét kỹ biểu thức chính quy chịu trách nhiệm về kết quả trên

'^[abcd]' dấu mũ (^) có nghĩa là đối sánh mẫu phải được áp dụng ngay từ đầu và danh sách ký tự [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 hợp kết quả của chúng tôi

Hãy sửa đổi tập lệnh trên của chúng tôi và sử dụng NOT charlist và xem kết quả chúng tôi sẽ nhận được sau khi thực hiện truy vấn của mình

SELECT * FROM `movies` WHERE `title` REGEXP '^[^abcd]';

Thực thi đoạn mã trên trong bàn làm việc của MySQL đối với myflixdb mang lại cho chúng tôi các kết quả sau














movie_id






title






director






year_released






category_id
















1






Pirates of the Caribean 4






 Rob Marshall






2011






1
















2






Forgetting Sarah Marshal






Nicholas Stoller






2008






2
















3






X-Men













2008























9






Honey mooners






John Schultz






2005






8
















16






67% Guilty













2012























17






The Great Dictator






Chalie Chaplie






1920






7
















18






sample movie






Anonymous













8
















19






movie 3






John Brown






1920






8













Bây giờ chúng ta hãy xem xét kỹ biểu thức chính quy chịu trách nhiệm cho các kết quả trên

'^[^abcd]' dấu mũ (^) có nghĩa là đối sánh mẫu phải được áp dụng ngay từ đầu và danh sách ký tự [^abcd] có nghĩa là tiêu đề phim bắt đầu bằng bất kỳ ký tự kèm theo nào được loại trừ khỏi tập hợp kết quả

Siêu ký tự biểu thức chính quy

Những gì chúng ta đã xem xét trong ví dụ trên là dạng đơn giản nhất của biểu thức chính quy. Bây giờ chúng ta hãy xem xét các đối sánh mẫu biểu thức chính quy nâng cao hơn. Giả sử chúng ta muốn tìm kiếm các tiêu đề phim bắt đầu bằng mẫu “mã” chỉ bằng cách sử dụng một biểu thức chính quy, chúng ta sẽ thực hiện như thế nào? . Chúng cho phép chúng tôi tinh chỉnh kết quả tìm kiếm mẫu của mình bằng cách sử dụng các biểu thức thông thường

CharDescriptionVí dụ*Siêu ký tự dấu hoa thị (*) được sử dụng để khớp với số không (0) hoặc nhiều phiên bản của các chuỗi trước nó CHỌN * TỪ phim WHERE tiêu đề REGEXP 'da*'; . Ví dụ, Da Vinci Code, Daddy’s Little Girls. +Dấu cộng (+) được sử dụng để so khớp với một hoặc nhiều thể hiện của chuỗi trước nó. CHỌN * TỪ `phim` Ở ĐÂU` tiêu đề` REGEXP 'mon+'; . Ví dụ, Thiên thần và Ác quỷ. ?Siêu ký tự câu hỏi (?) được sử dụng để khớp với số không (0) hoặc một phiên bản của các chuỗi trước nó. CHỌN * TỪ `danh mục` WHERE `tên_danh mục` REGEXP 'com?'; . Ví dụ, hài kịch, hài lãng mạn. Dấu chấm (. ) siêu ký tự được sử dụng để khớp với bất kỳ ký tự đơn nào ngoại trừ một dòng mới. CHỌN * TỪ phim Ở ĐÂU `year_released` REGEXP '200. ’; . Ví dụ: 2005,2007,2008, v.v. [abc]Danh sách xếp hạng [abc] được sử dụng để khớp với bất kỳ ký tự nào kèm theo. CHỌN * TỪ `phim` Ở ĐÂU` tiêu đề` REGEXP ‘[vwxyz]’; . Ví dụ, X-Men, Mật mã Da Vinci, v.v. [^abc]Bảng xếp hạng [^abc] được sử dụng để khớp với bất kỳ ký tự nào ngoại trừ các ký tự kèm theo. CHỌN * TỪ `phim` Ở ĐÂU` tiêu đề` REGEXP '^[^vwxyz]'; . [A-Z][A-Z] được sử dụng để khớp với bất kỳ chữ cái viết hoa nào. CHỌN * TỪ `thành viên` WHERE `postal_address` REGEXP ‘[A-Z]’; . . Ví dụ, Janet Jones với số thành viên 1. [a-z][a-z] được sử dụng để khớp với bất kỳ chữ cái viết thường nào CHỌN * TỪ `thành viên` WHERE `postal_address` REGEXP ‘[a-z]’; . . Ví dụ, Janet Jones với số thành viên 1. [0-9][0-9] được sử dụng để khớp với bất kỳ chữ số nào từ 0 đến 9. CHỌN * TỪ `thành viên` WHERE `số_liên_hệ` REGEXP ‘[0-9]’ sẽ cung cấp cho tất cả các thành viên đã gửi số liên lạc có chứa các ký tự “[0-9]”. Ví dụ, Robert Phil. ^Dấu mũ (^) được sử dụng để bắt đầu trận đấu ngay từ đầu. CHỌN * TỪ `phim` Ở ĐÂU` tiêu đề` REGEXP '^[cd]'; . Ví dụ, Code Name Black, Daddy’s Little Girls và Da Vinci Code. Thanh dọc (. ) được sử dụng để cô lập các lựa chọn thay thế. CHỌN * TỪ `phim` Ở ĐÂU` tiêu đề` REGEXP ‘^[cd]. ^[u]’; . Ví dụ như Code Name Black, Daddy’s Little Girl, Da Vinci Code và Underworld – Awakening. [[. <. ]]Các[[. <. ]] khớp với phần đầu của từ. CHỌN * TỪ `phim` Ở ĐÂU` tiêu đề` REGEXP ‘[[. <. ]]vì';

cung cấp tất cả các bộ phim có tiêu đề bắt đầu bằng các nhân vật. Ví dụ. quên Sarah Marshall

[[. >. ]]Các [[. >. ]] khớp với cuối từ. CHỌN * TỪ `phim` Ở ĐÂU` tiêu đề` REGEXP 'ack[[. >. ]]’;

cung cấp cho tất cả các bộ phim có tiêu đề kết thúc bằng ký tự “ack”

Ví dụ, Tên mã Đen

[. tầng lớp. ]Các [. tầng lớp. ] khớp với một lớp ký tự i. e

[. chữ cái. ] để ghép các chữ cái, [. không gian. ] để khớp với khoảng trắng, [. dấu câu. ] là khớp dấu câu và [. phía trên. ] cho các chữ cái lớp trên

CHỌN * TỪ `phim` Ở ĐÂU` tiêu đề` REGEXP ‘[. chữ cái. ]’;

cung cấp cho tất cả các bộ phim có tiêu đề chỉ chứa các chữ cái

Ví dụ: Quên Sarah Marshall, X-Men, v.v.

Phim như Pirates of the Caribbean 4 sẽ bị bỏ qua bởi truy vấn này

Dấu gạch chéo ngược (\) được sử dụng làm ký tự thoát. 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 ngược kép (\\)

REGEXP_LIKE trong SQL là gì?

REGEXP_LIKE tương tự như điều kiện LIKE, ngoại trừ REGEXP_LIKE thực hiện khớp biểu thức chính quy thay vì khớp mẫu đơn giản được thực hiện bởi LIKE . Điều kiện này đánh giá các chuỗi sử dụng các ký tự như được xác định bởi bộ ký tự đầu vào.

Sự khác biệt giữa REGEXP và like trong MySQL là gì?

REGEXP và LIKE được sử dụng cho các trường hợp hoàn toàn khác nhau. LIKE được sử dụng để thêm các ký tự đại diện vào một chuỗi trong khi REGEXP được sử dụng để khớp một thuộc tính với Biểu thức chính quy . Trong trường hợp của bạn, tên có nhiều khả năng được khớp bằng cách sử dụng LIKE hơn là REGEXP và do đó, nó sẽ được tối ưu hóa hơn.

REGEXP dùng để làm gì?

Regex có thể được sử dụng để thêm, xóa, tách biệt và thao tác với tất cả các loại văn bản và dữ liệu . Nó có thể được sử dụng như một lệnh soạn thảo văn bản đơn giản, e. g. , tìm kiếm và thay thế hoặc vì ngôn ngữ xử lý văn bản mạnh mẽ của riêng nó.

Sự khác biệt giữa thích và REGEXP là gì?

Về cơ bản, LIKE thực hiện các đối sánh ký tự đại diện rất đơn giản và REGEX có khả năng đối sánh các ký tự đại diện rất phức tạp . Trên thực tế, các biểu thức chính quy ( REGEX ) có khả năng đến mức bản thân chúng [1] là cả một nghiên cứu [2] một cách dễ dàng để giới thiệu các lỗi rất tinh vi.