MySQL REGEXP THÍCH

Tóm lược. 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ử

MySQL REGEXP THÍCH
MySQL REGEXP THÍCH

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ử

MySQL REGEXP THÍCH
MySQL REGEXP THÍCH

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ử

MySQL REGEXP THÍCH
MySQL REGEXP THÍCH

Để 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ử

MySQL REGEXP THÍCH
MySQL REGEXP THÍCH

Để 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ử

MySQL REGEXP THÍCH
MySQL REGEXP THÍCH

Để 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ử

MySQL REGEXP THÍCH
MySQL REGEXP THÍCH

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

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 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. Chúc vui vẻ. Lưu câu trả lời này.

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 để 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ế';