- 1 1. Tổng quan về MySQL LIKE
- 2 2. Cú pháp cơ bản của MySQL LIKE
- 3 3. Ký tự đại diện dùng với LIKE
- 4 4. Kỹ thuật so khớp mẫu
- 5 5. Escape ký tự đặc biệt trong LIKE
- 6 6. Sử dụng nâng cao của LIKE
- 7 7. Best Practices khi dùng LIKE
- 8 8. Các tình huống thường gặp khi dùng MySQL LIKE
- 9 9. Kết luận
- 10 10. Câu hỏi thường gặp
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ằngJohn
.
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ỗiMySQL
.
5. Escape ký tự đặc biệt trong LIKE
Trong LIKE
, các ký tự %
và _
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ằngfile_
. 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ứaSmith
.
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
và =
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
.