Hướng Dẫn Sử Dụng MySQL LIKE: Cú Pháp, Ví Dụ và Ký Tự Đại Diện

1. Tổng quan về MySQL LIKE

Toán tử LIKE trong MySQL được sử dụng để tìm kiếm dữ liệu khớp với một mẫu (pattern) cụ thể trong cơ sở dữ liệu. LIKE thường được dùng trong mệnh đề WHERE của SQL, cho phép đặt điều kiện tìm kiếm dựa trên một phần hoặc toàn bộ chuỗi. Ví dụ, bạn có thể dùng nó để tìm “tên bắt đầu bằng một ký tự nào đó” hoặc “mã sản phẩm chứa ký tự cụ thể”.

Ứng dụng của toán tử LIKE

  • Tìm kiếm khớp một phần
  • Tìm kiếm theo mẫu cụ thể
  • Lọc dữ liệu

Toán tử này chuyên về so khớp mẫu (pattern matching), nên rất cần thiết để tìm kiếm và thao tác dữ liệu hiệu quả trong cơ sở dữ liệu.

2. Cú pháp cơ bản của MySQL LIKE

Cú pháp cơ bản khi sử dụng toán tử LIKE trong MySQL như sau:

SELECT tên_cột FROM tên_bảng WHERE tên_cột LIKE 'mẫu';

Ví dụ cách sử dụng LIKE

  • Tìm dữ liệu bắt đầu bằng ký tự cụ thể
    SELECT * FROM users WHERE name LIKE 'A%';
  • Tìm dữ liệu chứa chuỗi ký tự cụ thể
    SELECT * FROM products WHERE product_code LIKE '%123%';

Toán tử LIKE thường được kết hợp với các ký tự đại diện (wildcard) như % hoặc _ để thực hiện tìm kiếm linh hoạt hơn.

3. Ký tự đại diện dùng với LIKE

Toán tử LIKE sử dụng ký tự đại diện để chỉ định mẫu tìm kiếm. Hai ký tự đại diện chính được MySQL hỗ trợ là:

% ký tự đại diện

  • Khớp với bất kỳ chuỗi nào (0 ký tự trở lên)
    SELECT * FROM users WHERE email LIKE '%@example.com';
    Ví dụ này tìm tất cả địa chỉ email kết thúc bằng @example.com.

_ ký tự đại diện

  • Khớp với đúng 1 ký tự bất kỳ
    SELECT * FROM products WHERE product_code LIKE '_A%';
    Ví dụ này tìm tất cả mã sản phẩm có ký tự thứ 2 là A.

Việc sử dụng ký tự đại diện hợp lý giúp lọc dữ liệu hiệu quả trong cơ sở dữ liệu.

4. Kỹ thuật so khớp mẫu

Kết hợp LIKE với ký tự đại diện cho phép thực hiện nhiều kiểu so khớp mẫu:

So khớp từ đầu chuỗi (Starts With)

  • Tìm dữ liệu có chuỗi bắt đầu bằng mẫu cụ thể
    SELECT * FROM customers WHERE name LIKE 'John%';
    Tìm tất cả khách hàng có tên bắt đầu bằng John.

So khớp từ cuối chuỗi (Ends With)

  • Tìm dữ liệu có chuỗi kết thúc bằng mẫu cụ thể
    SELECT * FROM files WHERE filename LIKE '%.pdf';
    Tìm tất cả tệp tin kết thúc bằng .pdf.

So khớp một phần (Contains)

  • Tìm dữ liệu chứa mẫu cụ thể
    SELECT * FROM documents WHERE content LIKE '%MySQL%';
    Tìm tất cả tài liệu có chứa chuỗi MySQL.

5. Escape ký tự đặc biệt trong LIKE

Trong LIKE, các ký tự %_ mang ý nghĩa đặc biệt. Nếu muốn tìm chính xác ký tự này như ký tự thường, cần dùng ký tự escape.

Cách sử dụng escape

  • Ví dụ tìm kiếm với escape
    SELECT * FROM filenames WHERE filename LIKE 'file_%' ESCAPE '';
    Câu lệnh này tìm tất cả tệp bắt đầu bằng file_. Thông thường _ được coi là ký tự đại diện, nhưng với ký tự escape, nó sẽ được coi là ký tự thường.

6. Sử dụng nâng cao của LIKE

LIKE có thể kết hợp với các câu lệnh SQL khác để tìm kiếm nâng cao.

Kết hợp với JOIN

  • Tìm dữ liệu liên quan giữa các bảng
    SELECT orders.id, customers.name FROM orders JOIN customers ON orders.customer_id = customers.id WHERE customers.name LIKE '%Smith%';
    Lấy các đơn hàng của khách hàng có tên chứa Smith.

Phủ định với NOT LIKE

  • Tìm dữ liệu không khớp với mẫu cụ thể
    SELECT * FROM emails WHERE address NOT LIKE '%@spam.com';
    Lấy các địa chỉ email không kết thúc bằng @spam.com.

7. Best Practices khi dùng LIKE

Khi dùng LIKE, cần lưu ý một số điểm:

Ảnh hưởng đến hiệu suất

  • Khi tìm kiếm dữ liệu lớn với LIKE, hiệu suất có thể giảm. Đặc biệt nếu ký tự % được đặt ở đầu mẫu, chỉ mục (index) sẽ không hoạt động và truy vấn sẽ chậm.

Sử dụng chỉ mục hợp lý

  • Để cải thiện hiệu suất, hãy cân nhắc tạo chỉ mục phù hợp khi cần.

8. Các tình huống thường gặp khi dùng MySQL LIKE

Toán tử LIKE được sử dụng trong nhiều trường hợp, chẳng hạn:

Tìm kiếm khách hàng

  • Khi tìm kiếm dựa trên tên hoặc email của khách hàng.

Tìm kiếm mã sản phẩm

  • Khi tìm sản phẩm dựa trên một phần mã sản phẩm.

9. Kết luận

LIKE là công cụ mạnh mẽ để so khớp mẫu trong MySQL. Bài viết này đã trình bày từ cú pháp cơ bản đến kỹ thuật nâng cao và tối ưu hóa hiệu suất. Hãy áp dụng LIKE đúng cách để tìm kiếm và quản lý dữ liệu hiệu quả.

10. Câu hỏi thường gặp

Q1: Sự khác nhau giữa LIKE= là gì?
A1: = dùng để tìm kiếm khớp hoàn toàn, còn LIKE dùng để tìm kiếm khớp một phần hoặc so khớp mẫu.

Q2: LIKE có phân biệt chữ hoa chữ thường không?
A2: Mặc định MySQL không phân biệt hoa/thường với LIKE. Tuy nhiên, bạn có thể dùng từ khóa BINARY để phân biệt.

Q3: Toán tử LIKE có dùng được cho số không?
A3: Thông thường dùng cho chuỗi, nhưng nếu số được lưu dạng chuỗi thì vẫn có thể dùng LIKE.