×

Làm thế nào để sử dụng LIKE và REGEXP để tìm kiếm theo mẫu?

Trong MySQL, LIKEREGEXP là hai toán tử được sử dụng để thực hiện tìm kiếm theo mẫu trong cơ sở dữ liệu. Mỗi toán tử có ưu điểm và cách sử dụng riêng tùy thuộc vào nhu cầu tìm kiếm cụ thể của bạn.

Sử dụng LIKE

LIKE là toán tử cho phép bạn tìm kiếm các mẫu dựa trên các ký tự đại diện cụ thể. % đại diện cho một chuỗi ký tự bất kỳ (kể cả chuỗi rỗng), trong khi _ đại diện cho một ký tự bất kỳ.

Cú pháp:

SELECT column_names
FROM table_name
WHERE column_name LIKE pattern;

Ví dụ:

  • Tìm tất cả các bản ghi có tên bắt đầu bằng "Nguyễn":
    SELECT * FROM nhan_vien
    WHERE ten LIKE 'Nguyễn%';
    
  • Tìm tất cả các bản ghi có tên chứa "van":
    SELECT * FROM nhan_vien
    WHERE ten LIKE '%van%';
    
  • Tìm tất cả các bản ghi có tên là ba ký tự, bắt đầu bằng "Le":
    SELECT * FROM nhan_vien
    WHERE ten LIKE 'Le_';
    

Sử dụng REGEXP

REGEXP cho phép bạn tìm kiếm các mẫu sử dụng biểu thức chính quy (regular expressions), cung cấp sự linh hoạt cao hơn LIKE trong việc xác định các mẫu tìm kiếm.

Cú pháp:

SELECT column_names
FROM table_name
WHERE column_name REGEXP pattern;

Ví dụ:

  • Tìm tất cả các bản ghi có tên bắt đầu bằng "Nguyễn":
    SELECT * FROM nhan_vien
    WHERE ten REGEXP '^Nguyễn';
    
  • Tìm tất cả các bản ghi có tên chứa "van" ở bất kỳ vị trí nào:
    SELECT * FROM nhan_vien
    WHERE ten REGEXP 'van';
    
  • Tìm tất cả các bản ghi có tên kết thúc bằng "son" hoặc "sen":
    SELECT * FROM nhan_vien
    WHERE ten REGEXP '(son|sen)$';
    

Khi nào sử dụng LIKE và REGEXP

  • LIKE: Đơn giản, hiệu quả cho các truy vấn tìm kiếm mẫu cơ bản như kiểm tra tiền tố, hậu tố hoặc chứa các chuỗi ký tự.
  • REGEXP: Mạnh mẽ và linh hoạt, hữu ích cho các mẫu tìm kiếm phức tạp, sử dụng các biểu thức chính quy để xác định mẫu.

Lựa chọn giữa LIKEREGEXP tùy thuộc vào yêu cầu cụ thể của truy vấn và độ phức tạp của mẫu bạn muốn tìm. REGEXP, mặc dù mạnh mẽ hơn, có thể sẽ chậm hơn so với LIKE đối với các mẫu đơn giản do tính toán phức tạp hơn.

Comments