REGEXP so với THÍCH trong MySQL
Hàm Show Gần đây, tôi gặp một tình huống tại nơi làm việc mà tôi cần thực hiện tìm kiếm họ/tên trên một trường tên duy nhất. Do thiết kế cơ sở dữ liệu kém, trường tên ở dạng “họ, tên”. Ban đầu, tôi sử dụng
Thử nghiệm của chúng tôi cho thấy rằng truy vấn này tạo ra kết quả chất lượng tốt cho các tìm kiếm tên, nhưng tôi có cảm giác rằng nó sẽ làm chậm đáng kể máy chủ cơ sở dữ liệu khi tải một chút Thử nghiệm bằng JMeter đã xác nhận linh cảm này và tôi đã phải đối mặt với nhiệm vụ tối ưu hóa truy vấn mà không ảnh hưởng đến chất lượng của kết quả phải làm gì? Nhập hàm
Ban đầu, tôi đã (sai lầm) nghĩ rằng các ký tự đại diện của Nhược điểm với khớp mẫu của Oracle cung cấp hàm REGEXP_LIKE hỗ trợ cú pháp và hành vi tương tự cho các biểu thức chính quy, nhưng nó phân biệt chữ hoa chữ thường theo mặc định, vì vậy tham số 'i' là bắt buộc để khớp không phân biệt chữ hoa chữ thường Hàm REGEXP_LIKE() trong MySQL được sử dụng để so khớp mẫu. Nó so sánh xem các chuỗi đã cho có khớp với biểu thức chính quy hay không. Nó trả về 1 nếu các chuỗi khớp với biểu thức chính quy và trả về 0 nếu không tìm thấy kết quả khớp cú phápSau đây là cú pháp cơ bản để sử dụng chức năng này trong MySQL Giải thích thông sốGiải thích về các tham số chức năng REGEXP_LIKE() là sự diễn đạt. Đó là một chuỗi đầu vào mà chúng tôi thực hiện tìm kiếm để khớp với biểu thức chính quy mẫu. Nó đại diện cho biểu thức chính quy mà chúng tôi đang kiểm tra chuỗi Loại so khớp. Nó là một chuỗi cho phép chúng ta tinh chỉnh biểu thức chính quy. Nó sử dụng các ký tự có thể sau để thực hiện so khớp
Hãy cho chúng tôi hiểu cách chúng tôi có thể sử dụng chức năng này trong MySQL với các ví dụ khác nhau Thí dụCâu lệnh sau giải thích ví dụ cơ bản về hàm REGEXP_LIKE trong MySQL Trong ví dụ này, biểu thức chính quy có thể chỉ định bất kỳ ký tự nào thay cho dấu chấm. Vì vậy, chúng tôi sẽ nhận được một trận đấu ở đây. Vì vậy, hàm này trả về 1 để biểu thị kết quả khớp Câu lệnh dưới đây là một ví dụ khác trong đó chuỗi đầu vào không khớp với biểu thức chính quy đã cho Đây là đầu ra Câu lệnh dưới đây là một ví dụ khác trong đó biểu thức chính quy được chỉ định tìm kiếm xem chuỗi có kết thúc bằng các ký tự đã cho hay không Đây là kết quả Chúng tôi có thể cung cấp một tham số bổ sung để tinh chỉnh biểu thức chính quy bằng cách sử dụng các đối số loại đối sánh. Xem ví dụ bên dưới nơi chúng tôi đang chỉ định khớp phân biệt chữ hoa chữ thường và chữ hoa chữ thường Sự khác biệt giữa các toán tử like và REGEXP trong MySQL 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.
RegEx có nhanh hơn như trong SQL không?Vâng, có thể sẽ nhanh hơn một chút vì LIKE SQL tiêu chuẩn là một thao tác so sánh đơn giản hơn trình phân tích cú pháp regex đầy đủ. Tuy nhiên, trong điều kiện thực tế, cả hai đều rất chậm, bởi vì cả hai đều không thể sử dụng các chỉ số.
REGEXP_LIKE trong MySQL là gì?Hàm REGEXP_LIKE() trong MySQL được dùng để khớp mẫu . Nó so sánh xem các chuỗi đã cho có khớp với biểu thức chính quy hay không. Nó trả về 1 nếu các chuỗi khớp với biểu thức chính quy và trả về 0 nếu không tìm thấy kết quả khớ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. |