Nhóm chụp regex MySQL

Bản tóm tắt. trong hướng dẫn này, bạn sẽ học cách sử dụng toán tử REGEXP của MySQL để thực hiện các tìm kiếm phức tạp dựa trên các biểu thức chính quy

Giới thiệu về biểu thức chính quy

Biểu thức chính quy là một chuỗi đặc biệt mô tả mẫu tìm kiếm. Nó là một công cụ mạnh giúp bạn xác định các chuỗi văn bản một cách ngắn gọn và linh hoạt. g. , ký tự và từ, dựa trên các mẫu

Ví dụ: bạn có thể sử dụng cụm từ thông dụng để tìm kiếm email, địa chỉ IP, số điện thoại, số an sinh xã hội hoặc bất kỳ thứ gì có mẫu cụ thể

Một biểu thức chính quy sử dụng cú pháp riêng của nó mà bộ xử lý biểu thức chính quy có thể diễn giải. 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

Ưu điểm của việc sử dụng biểu thức chính quy là bạn 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ử

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
9. Các biểu thức chính quy có nhiều ký tự meta hơn để xây dựng các mẫu linh hoạt

Nhược điểm của việc sử dụng biểu thức chính quy là khá khó hiểu và duy trì một mẫu phức tạp như vậy. Vì vậy, bạn nên mô tả ý nghĩa của biểu thức chính quy trong chú thích của câu lệnh SQL. Ngoài ra, trong một số trường hợp, tốc độ truy xuất dữ liệu bị giảm nếu bạn sử dụng các mẫu phức tạp trong biểu thức chính quy

Viết tắt của biểu thức chính quy là regex hoặc regexp

Toán tử REGEXP của MySQL

MySQL điều chỉnh biểu thức chính quy do Henry Spencer triển khai. MySQL cho phép bạn khớp mẫu ngay trong câu lệnh SQL bằng cách sử dụng toán tử

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
0

Phần sau đây minh họa cú pháp của toán tử

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
0 trong mệnh đề  

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
0 clause.

SELECT column_list FROM table_name WHERE string_column REGEXP pattern;

Code language: SQL (Structured Query Language) (sql)

Câu lệnh này thực hiện khớp mẫu của một

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
1 với một

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
2

Nếu một giá trị trong

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
1 khớp với

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
2, biểu thức trong mệnh đề

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
5 trả về true, ngược lại trả về false

Nếu một trong hai

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
1 hoặc

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
2 là

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
8, kết quả là

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
9

Ngoài toán tử

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
0, bạn có thể sử dụng toán tử

SELECT column_list FROM table_name WHERE string_column REGEXP pattern;

Code language: SQL (Structured Query Language) (sql)
11, đồng nghĩa với toán tử

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
0

Dạng phủ định của toán tử

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
0 là

SELECT column_list FROM table_name WHERE string_column REGEXP pattern;

Code language: SQL (Structured Query Language) (sql)
14

Các ví dụ về REGEXP của MySQL

Giả sử bạn muốn tìm tất cả các sản phẩm có họ bắt đầu bằng ký tự A, B hoặc C. Bạn có thể sử dụng biểu thức chính quy trong câu lệnh

SELECT column_list FROM table_name WHERE string_column REGEXP pattern;

Code language: SQL (Structured Query Language) (sql)
15 sau đây

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)

Dùng thử

Nhóm chụp regex MySQL
Nhóm chụp regex MySQL

Mẫu cho phép bạn tìm sản phẩm có tên bắt đầu bằng A, B hoặc C

  • Ký tự ^ có nghĩa là khớp từ đầu chuỗi
  • Nhân vật. có nghĩa là tìm kiếm các lựa chọn thay thế nếu không phù hợp

Bảng sau đây minh họa một số siêu ký tự và cấu trúc thường được sử dụng trong một biểu thức chính quy

MetacharacterBehavior^khớp với vị trí ở đầu chuỗi tìm kiếm$khớp với vị trí ở cuối chuỗi tìm kiếm. khớp với bất kỳ ký tự đơn nào[…]khớp với bất kỳ ký tự nào được chỉ định bên trong dấu ngoặc vuông[^…]khớp với bất kỳ ký tự nào không được chỉ định bên trong dấu ngoặc vuôngsp1. p2khớp với bất kỳ mẫu nào p1 hoặc p2*khớp với ký tự trước 0 hoặc nhiều lần+khớp với ký tự trước một hoặc nhiều lần{n}khớp với n số lần ký tự trước đó{m,n}khớp từ m đến n số lần

Để tìm những sản phẩm có tên bắt đầu bằng ký tự

SELECT column_list FROM table_name WHERE string_column REGEXP pattern;

Code language: SQL (Structured Query Language) (sql)
16, bạn sử dụng ký tự phụ

SELECT column_list FROM table_name WHERE string_column REGEXP pattern;

Code language: SQL (Structured Query Language) (sql)
17 để khớp với đầu tên

SELECT column_list FROM table_name WHERE string_column REGEXP pattern;

Code language: SQL (Structured Query Language) (sql)
1

Dùng thử

Nhóm chụp regex MySQL
Nhóm chụp regex MySQL

Nếu bạn muốn toán tử

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
0 so sánh các chuỗi theo kiểu phân biệt chữ hoa chữ thường, bạn có thể sử dụng toán tử BINARY  để chuyển một chuỗi thành một .

Bởi vì MySQL so sánh từng chuỗi nhị phân theo từng byte thay vì từng ký tự. Điều này cho phép so sánh chuỗi phân biệt chữ hoa chữ thường

Ví dụ: câu lệnh sau chỉ khớp với chữ hoa

SELECT column_list FROM table_name WHERE string_column REGEXP pattern;

Code language: SQL (Structured Query Language) (sql)
19 ở đầu tên sản phẩm

SELECT column_list FROM table_name WHERE string_column REGEXP pattern;

Code language: SQL (Structured Query Language) (sql)
9

Dùng thử

Nhóm chụp regex MySQL
Nhóm chụp regex MySQL

Để tìm sản phẩm có tên kết thúc bằng f, bạn sử dụng

SELECT column_list FROM table_name WHERE string_column REGEXP pattern;

Code language: SQL (Structured Query Language) (sql)
90 để khớp với phần cuối của chuỗi

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
1

Dùng thử

Nhóm chụp regex MySQL
Nhóm chụp regex MySQL

Để tìm sản phẩm có tên chứa từ

SELECT column_list FROM table_name WHERE string_column REGEXP pattern;

Code language: SQL (Structured Query Language) (sql)
91, bạn sử dụng câu truy vấn sau

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
3

Dùng thử

Nhóm chụp regex MySQL
Nhóm chụp regex MySQL

Để tìm sản phẩm có tên chứa chính xác 10 ký tự, bạn sử dụng '

SELECT column_list FROM table_name WHERE string_column REGEXP pattern;

Code language: SQL (Structured Query Language) (sql)
92 và '

SELECT column_list FROM table_name WHERE string_column REGEXP pattern;

Code language: SQL (Structured Query Language) (sql)
93 .
to match the beginning and end of the product name, and repeat

SELECT column_list FROM table_name WHERE string_column REGEXP pattern;

Code language: SQL (Structured Query Language) (sql)
94 times of any character ‘

SELECT column_list FROM table_name WHERE string_column REGEXP pattern;

Code language: SQL (Structured Query Language) (sql)
95
in between as shown in the following query:

SELECT productname FROM products WHERE productname REGEXP '^(A|B|C)' ORDER BY productname;

Code language: SQL (Structured Query Language) (sql)
8

Dùng thử

Nhóm chụp regex MySQL
Nhóm chụp regex MySQL

Trong hướng dẫn này, bạn đã học cách truy vấn dữ liệu bằng toán tử REGEXP của MySQL với các biểu thức chính quy

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

Hàm REGEXP_REPLACE() của MySQL được sử dụng để so khớp mẫu. .
mysql> SET @str = 'BBA BCA BBA BCA BBA';
mysql> CHỌN @str AS 'Chuỗi gốc',
REGEXP_REPLACE(@str, 'BBA', 'MCA', 2, 2) AS 'Chuỗi có thể thay thế';

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

Hàm REGEXP_SUBSTR() trong MySQL được sử dụng để so khớp mẫu. .
mysql> CHỌN
REGEXP_SUBSTR ('Đào Chó Đào', 'd. g', 1, 1, 'i') NHƯ ' Không phân biệt chữ hoa chữ thường',
REGEXP_SUBSTR ('Đào Chó Đào', 'd. g', 1, 1, 'c') AS ' Phân biệt chữ hoa chữ thường';

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.

MySQL sử dụng hương vị nào của RegEx?

MySQL chỉ có một toán tử cho phép bạn làm việc với các biểu thức chính quy. Đây là toán tử REGEXP, hoạt động giống như toán tử LIKE, ngoại trừ việc thay vì sử dụng ký tự đại diện _ và %, toán tử này sử dụng Biểu thức chính quy mở rộng POSIX (ERE).