MySQL Ở ĐÂU regex

Biểu thức chính quy là một chuỗi đặc biệt mô tả mẫu tìm kiếm. Đó là một công cụ mạnh mẽ để cung cấp một cách ngắn gọn và linh hoạt để xác định các chuỗi văn bản như ký tự và từ dựa trên các mẫu. Nó sử dụng cú pháp riêng có thể được giải thích bởi bộ xử lý biểu thức chính quy. Một biểu thức chính quy được sử dụng rộng rãi trong hầu hết các nền tảng, từ ngôn ngữ lập trình đến cơ sở dữ liệu, bao gồm cả MySQL

Biểu thức chính quy sử dụng dấu gạch chéo ngược làm ký tự thoát cần được xem xét trong đối sánh mẫu nếu đã sử dụng dấu gạch chéo ngược kép. Biểu thức chính quy không phân biệt chữ hoa chữ thường. Nó được viết tắt là REGEX hoặc REGEXP trong MySQL

Ưu điểm của việc sử dụng biểu thức chính quy là chúng ta không bị giới hạn trong việc tìm kiếm một chuỗi dựa trên một mẫu cố định với dấu phần trăm (%) và dấu gạch dưới (_) trong toán tử LIKE. Biểu thức chính quy có nhiều ký tự meta hơn cho phép linh hoạt hơn và kiểm soát hơn trong khi thực hiện so khớp mẫu

Trước đây chúng ta đã học về ký tự đại diện, cho phép chúng ta nhận được kết quả tương tự như biểu thức chính quy. Vì vậy, chúng tôi có thể hỏi tại sao chúng tôi học các biểu thức chính quy nếu chúng tôi sẽ nhận được kết quả tương tự như các ký tự đại diện. Đó là bởi vì các biểu thức chính quy cho phép chúng tôi tìm kiếm dữ liệu phù hợp theo những cách phức tạp hơn so với các ký tự đại diện

cú pháp

MySQL điều chỉnh biểu thức chính quy do Henry Spencer triển khai. MySQL cho phép chúng ta khớp các mẫu ngay trong câu lệnh SQL bằng cách sử dụng toán tử REGEXP. Sau đây là cú pháp cơ bản minh họa việc sử dụng biểu thức chính quy trong MySQL

Trong cú pháp này, column_list cho biết tên cột trả về trong tập kết quả. Tên_bảng là tên của bảng mà dữ liệu sẽ được truy xuất bằng cách sử dụng mẫu. Trường WHERE_name đại diện cho tên cột mà biểu thức chính quy được thực hiện. REGEXP là toán tử biểu thức chính quy và mẫu là điều kiện tìm kiếm được khớp với REGEXP. Chúng ta cũng có thể sử dụng toán tử RLIKE, đồng nghĩa với REGEXP sẽ cho kết quả tương tự như REGEXP. Chúng ta có thể tránh nhầm lẫn khi sử dụng câu lệnh này với toán tử LIKE bằng cách sử dụng REGEXP thay vì LIKE

Câu lệnh này trả về true nếu một giá trị trong trường WHERE_name khớp với mẫu. Nếu không, nó trả về false. Nếu tên_trường hoặc mẫu là NULL, thì kết quả luôn là NULL. Dạng phủ định của toán tử REGEXP KHÔNG phải là REGEXP

Ký tự meta biểu thức chính quy

Bảng sau đây hiển thị các cấu trúc và ký tự meta được sử dụng phổ biến nhất trong một biểu thức chính quy

Meta-CharacterDescriptions^The caret (^) character is used to start matches at the beginning of a searched string.$The dollar ($) character is used to start matches at the end of a searched string..The dot (.) character matches any single character except for a new line.[abc]It is used to match any characters enclosed in the square brackets.[^abc]It is used to match any characters not specified in the square brackets.*The asterisk (*) character matches zero (0) or more instances of the preceding strings.+The plus (+) character matches one or more instances of preceding strings.{n}It is used to match n instances of the preceding element.{m, n}It is used to match m to n instance of the preceding element.p1|p2It is used to isolate alternatives that match any of the patterns p1 or p2.?The question mark (?) character matches zero (0) or one instance of preceding strings.[A-Z]It is used to match any upper case character.[a-z]It is used to match any lower case character.[0-9]It is used to match numeric digits from 0 to 9.[[:<:]]It matches the beginning of words.[[:>:]]It matches the end of words.[:class:]It is used to match a character class, i.e. [:alpha:] matches letters, [:space:] matches white space, [:punct:] matches punctuations and [:upper:] for upper-class letters.

Hãy cho chúng tôi hiểu các biểu thức chính quy bằng các ví dụ thực tế được đưa ra dưới đây

Giả sử chúng ta có một bảng có tên student_info chứa dữ liệu sau. Chúng tôi sẽ chứng minh các ví dụ khác nhau dựa trên dữ liệu bảng này

MySQL Ở ĐÂU regex

Nếu chúng ta muốn tìm kiếm những sinh viên có tên bắt đầu bằng "A hoặc B", 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ự như sau

Thực hiện câu lệnh, chúng ta sẽ nhận được kết quả mong muốn. Xem đầu ra bên dưới

MySQL Ở ĐÂU regex

Nếu chúng ta muốn lấy thông tin sinh viên có tên kết thúc bằng k, chúng ta có thể sử dụng siêu ký tự 'k$' để khớp với phần cuối của chuỗi như sau

Thực hiện câu lệnh, chúng ta sẽ nhận được kết quả mong muốn. Xem đầu ra bên dưới

MySQL Ở ĐÂU regex

Nếu chúng tôi muốn lấy thông tin sinh viên có tên chứa chính xác sáu ký tự, chúng tôi có thể thực hiện việc này bằng cách sử dụng ký tự meta '^' và '$. Các ký tự này khớp với phần đầu và phần cuối của tên học sinh và lặp lại {6} lần của bất kỳ ký tự nào'. ' ở giữa như thể hiện trong tuyên bố sau

Thực hiện câu lệnh, chúng ta sẽ nhận được kết quả mong muốn. Xem đầu ra bên dưới

MySQL Ở ĐÂU regex

Nếu chúng tôi muốn lấy thông tin sinh viên có chủ đề chứa ký tự 'i', chúng tôi có thể thực hiện việc này bằng cách sử dụng truy vấn bên dưới

Thực hiện câu lệnh, chúng ta sẽ nhận được kết quả mong muốn. Xem đầu ra bên dưới

MySQL Ở ĐÂU regex

Hàm biểu thức chính quy và toán tử

Sau đây là danh sách các hàm và toán tử thông thường trong MySQL

NameDescriptionsNOT_REGEXPIt là phủ định của toán tử REGEXP. REGEXPToán tử này cho biết chuỗi có khớp với biểu thức chính quy hay không. RLIKE Toán tử này cho biết chuỗi có khớp với biểu thức chính quy hay không. REGEXP_INSTR()Đây là hàm cho kết quả khi chỉ mục bắt đầu của chuỗi con khớp với biểu thức chính quy. REGEXP_LIKE() Hàm này cho biết chuỗi có khớp với biểu thức chính quy hay không. REGEXP_REPLACE() Nó cho kết quả bằng cách thay thế các chuỗi con khớp với biểu thức chính quy. REGEXP_SUBSTRING() Hàm này trả về chuỗi con khớp với biểu thức chính quy

Hãy xem tất cả chúng một cách chi tiết

REGEXP, RLIKE, & REGEXP_LIKE()

Mặc dù các hàm và toán tử này trả về cùng một kết quả, REGEXP_LIKE() cung cấp cho chúng ta nhiều chức năng hơn với các tham số tùy chọn. Chúng ta có thể sử dụng chúng như sau

Các câu lệnh này đưa ra kết quả cho dù biểu thức chuỗi có khớp với mẫu biểu thức chính quy hay không. Chúng tôi sẽ nhận được 1 nếu một biểu thức khớp với mẫu. Nếu không, họ trả về 0. Các ví dụ dưới đây giải thích rõ ràng hơn

Trong hình bên dưới, câu lệnh đầu tiên trả về '1' vì 'B' nằm trong phạm vi A-Z. Câu lệnh thứ hai giới hạn phạm vi của mẫu ở B-Z. Vì vậy, 'A' sẽ không khớp với bất kỳ ký tự nào trong phạm vi và MySQL trả về 0. Ở đây chúng tôi đã sử dụng bí danh match_ và not_match_ để cột được trả về sẽ dễ hiểu hơn

MySQL Ở ĐÂU regex

Tham số REGEXP_LIKE()

Sau đây là năm tham số có thể để sửa đổi đầu ra của chức năng

  • c. Nó đại diện cho một kết hợp phân biệt chữ hoa chữ thường
  • i. Nó đại diện cho một kết hợp không phân biệt chữ hoa chữ thường
  • m. Nó đại diện cho chế độ nhiều dòng cho phép kết thúc dòng trong chuỗi. Theo mặc định, hàm này khớp với các dấu kết thúc dòng ở đầu và cuối chuỗi
  • n. Nó được sử dụng để sửa đổi các. (dấu chấm) ký tự để khớp với các đầu cuối dòng
  • u. Nó đại diện cho các kết thúc dòng chỉ dành cho Unix

Thí dụ

Trong ví dụ này, chúng tôi đã thêm 'c' và 'i' làm tham số tùy chọn, tham số này gọi kết hợp phân biệt chữ hoa chữ thường và chữ hoa chữ thường. Truy vấn đầu tiên cho kết quả 0 vì 'a' nằm trong phạm vi 'a-z', nhưng không nằm trong phạm vi chữ in hoa A-Z. Truy vấn thứ hai cho đầu ra 1 vì các tính năng không phân biệt chữ hoa chữ thường

MySQL Ở ĐÂU regex

KHÔNG REGEXP & KHÔNG THÍCH

Chúng là các toán tử biểu thức chính quy so sánh mẫu đã chỉ định và trả về kết quả không khớp với mẫu. Các toán tử này trả về 1 nếu không tìm thấy kết quả khớp. Nếu không, họ trả về 0. Chúng ta có thể sử dụng các chức năng này như sau

Thí dụ

Câu lệnh dưới đây trả về 0 vì 'a' được tìm thấy trong phạm vi đã cho

Đây là đầu ra

MySQL Ở ĐÂU regex

REGEXP_INSTR()

Đây là một hàm cho kết quả khi chỉ mục bắt đầu của biểu thức chuỗi con khớp với mẫu. Nó trả về 0 nếu không tìm thấy kết quả phù hợp. Nếu một trong hai biểu thức hoặc mẫu là NULL, nó sẽ trả về NULL. Ở đây lập chỉ mục bắt đầu từ 1

Hàm này sử dụng các tham số tùy chọn khác nhau là vị trí, lần xuất hiện, return_option, match_type, v.v.

Thí dụ

Giả sử chúng ta muốn lấy vị trí chỉ mục của chuỗi con 'a' trong expr (a b c d e f a). Truy vấn đầu tiên trả về 1 vì chúng tôi chưa đặt bất kỳ tham số tùy chọn nào, đây là chỉ mục đầu tiên của chuỗi. Truy vấn thứ hai trả về 13 vì chúng tôi đã sửa đổi truy vấn với sự xuất hiện của tham số tùy chọn


MySQL Ở ĐÂU regex

REGEXP_REPLACE()

Hàm này thay thế ký tự chuỗi đã chỉ định bằng các ký tự phù hợp và sau đó trả về chuỗi kết quả. Nếu không tìm thấy bất kỳ biểu thức, mẫu hoặc chuỗi có thể thay thế nào, nó sẽ trả về NULL. Chức năng này có thể được sử dụng như sau

Ký tự thay thế sử dụng các tham số tùy chọn chẳng hạn như vị trí, lần xuất hiện và kiểu khớp

Thí dụ

Câu lệnh này thay thế mẫu 'hướng dẫn' bằng mẫu 'javat'

Đây là đầu ra

MySQL Ở ĐÂU regex

REGEXP_SUBSTRING()

Hàm này trả về chuỗi con của một biểu thức khớp với mẫu đã chỉ định. Nếu biểu thức hoặc mẫu được chỉ định hoặc thậm chí không tìm thấy kết quả khớp, nó sẽ trả về NULL. Chức năng này có thể được sử dụng như sau

Làm cách nào để sử dụng RegEx trong MySQL?

REGEXP là toán tử được sử dụng khi thực hiện khớp mẫu biểu thức chính quy. . mysql. Biểu thức chính quy (Regexp)

Làm cách nào để khớp mẫu trong MySQL?

Kết hợp mẫu SQL cho phép bạn sử dụng _ để khớp với bất kỳ ký tự đơn nào và % để khớp với số lượng ký tự tùy ý (bao gồm cả ký tự 0) . Trong MySQL, các mẫu SQL không phân biệt chữ hoa chữ thường theo mặc định. Một số ví dụ được hiển thị ở đây. Không sử dụng = hoặc <> khi bạn sử dụng các mẫu SQL.

Làm cách nào để kiểm tra RegEx trong SQL?

Biểu thức chính quy SQL. Cú pháp sử dụng Regex trong SQL. . Biểu thức chính quy SQL

Làm cách nào để sử dụng WHERE trong MySQL?

Bạn có thể sử dụng một hoặc nhiều bảng được phân tách bằng dấu phẩy để bao gồm các điều kiện khác nhau bằng cách sử dụng mệnh đề WHERE , nhưng mệnh đề WHERE là tùy chọn . Bạn có thể chỉ định bất kỳ điều kiện nào bằng mệnh đề WHERE. Bạn có thể chỉ định nhiều hơn một điều kiện bằng toán tử AND hoặc OR.