1. Giới thiệu
Câu lệnh LIKE trong MySQL được sử dụng để tìm kiếm các chuỗi phù hợp với một mẫu cụ thể trong bảng. Khi bạn làm việc với dữ liệu dạng chuỗi và cần tìm các bản ghi dựa trên mẫu ký tự như bắt đầu bằng, kết thúc bằng, hoặc chứa một chuỗi con nhất định, câu lệnh LIKE là công cụ hữu ích để thực hiện điều này.
Trong bài viết này, chúng ta sẽ tìm hiểu cú pháp và cách sử dụng câu lệnh LIKE, kèm theo các ví dụ minh họa từ bảng dữ liệu giả định để bạn có thể dễ dàng áp dụng trong thực tế.
2. Bảng dữ liệu diả định
Giả sử chúng ta có bảng employees với các thông tin như sau:
| employee_id | first_name | last_name | department | salary | age |
|---|---|---|---|---|---|
| 1 | John | Doe | Sales | 1500000 | 35 |
| 2 | Jane | Smith | Marketing | 1700000 | 28 |
| 3 | Bob | Johnson | Sales | 1300000 | 40 |
| 4 | Alice | Brown | HR | 2000000 | 45 |
| 5 | Charlie | Green | Marketing | 1800000 | 25 |
3. SQL LIKE là gì?
LIKE là một toán tử trong SQL được sử dụng để tìm kiếm các giá trị chuỗi trong một cột dựa trên một mẫu ký tự cụ thể. Toán tử này thường được sử dụng với các cột có kiểu dữ liệu là chuỗi (VARCHAR, TEXT).
Câu lệnh LIKE hỗ trợ hai ký tự đại diện chính:
%: Đại diện cho bất kỳ số lượng ký tự nào, bao gồm cả không có ký tự nào._: Đại diện cho một ký tự đơn.
Cú pháp tổng quát của SQL LIKE:
SELECT column1, column2, ...
FROM table_name
WHERE column_name LIKE pattern;column1, column2, ...: Các cột bạn muốn chọn.table_name: Tên bảng chứa dữ liệu.column_name: Cột mà bạn muốn tìm kiếm mẫu.pattern: Mẫu ký tự mà bạn muốn tìm.
4. Cách sử dụng SQL LIKE
a. Tìm kiếm chuỗi bắt đầu với một ký tự cụ thể
Nếu bạn muốn tìm tất cả các bản ghi mà chuỗi bắt đầu với một ký tự hoặc một chuỗi cụ thể, bạn có thể sử dụng mẫu với ký tự đại diện % ở cuối chuỗi.
Ví dụ 1: Tìm tất cả nhân viên có tên bắt đầu bằng "J"
SELECT first_name, last_name
FROM employees
WHERE first_name LIKE 'J%';Kết quả:
| first_name | last_name |
|---|---|
| John | Doe |
| Jane | Smith |
Trong ví dụ này, tất cả các nhân viên có tên bắt đầu bằng "J" sẽ được liệt kê.
b. Tìm kiếm chuỗi kết thúc với một ký tự cụ thể
Nếu bạn muốn tìm tất cả các bản ghi mà chuỗi kết thúc với một ký tự hoặc chuỗi cụ thể, bạn có thể sử dụng mẫu với ký tự đại diện % ở đầu chuỗi.
Ví dụ 2: Tìm tất cả nhân viên có họ kết thúc bằng "n"
SELECT first_name, last_name
FROM employees
WHERE last_name LIKE '%n';Kết quả:
| first_name | last_name |
|---|---|
| John | Johnson |
| Alice | Brown |
| Charlie | Green |
Câu lệnh này sẽ trả về tất cả nhân viên có họ kết thúc bằng chữ "n".
c. Tìm kiếm chuỗi chứa một ký tự cụ thể ở giữa
Bạn có thể sử dụng ký tự % ở cả hai bên để tìm tất cả các bản ghi có chứa một chuỗi con ở bất kỳ vị trí nào trong chuỗi.
Ví dụ 3: Tìm tất cả nhân viên có họ chứa chuỗi "ee"
SELECT first_name, last_name
FROM employees
WHERE last_name LIKE '%ee%';Kết quả:
| first_name | last_name |
|---|---|
| Charlie | Green |
Câu lệnh này sẽ trả về các nhân viên có họ chứa chuỗi "ee".
d. Tìm kiếm với một ký tự đại diện (_)
Nếu bạn muốn tìm các bản ghi có một ký tự cụ thể tại một vị trí nhất định, bạn có thể sử dụng ký tự đại diện _ để đại diện cho một ký tự đơn.
Ví dụ 4: Tìm tất cả nhân viên có tên gồm 4 ký tự, và ký tự cuối cùng là "e"
SELECT first_name, last_name
FROM employees
WHERE first_name LIKE '___e';Kết quả:
| first_name | last_name |
|---|---|
| Jane | Smith |
Câu lệnh này sẽ trả về các nhân viên có tên gồm 4 ký tự và kết thúc bằng chữ "e".
e. Sử dụng NOT LIKE
Bạn cũng có thể sử dụng NOT LIKE để tìm kiếm các bản ghi không phù hợp với mẫu ký tự.
Ví dụ 5: Tìm tất cả nhân viên không có họ bắt đầu bằng "S"
SELECT first_name, last_name
FROM employees
WHERE last_name NOT LIKE 'S%';Kết quả:
| first_name | last_name |
|---|---|
| John | Doe |
| Bob | Johnson |
| Alice | Brown |
| Charlie | Green |
Câu lệnh này sẽ trả về tất cả các nhân viên có họ không bắt đầu bằng chữ "S".
5. Các ví dụ về sử dụng MySQL LIKE
Ví dụ 1: Tìm tất cả các nhân viên có tên bắt đầu bằng "A"
SELECT first_name, last_name
FROM employees
WHERE first_name LIKE 'A%';Ví dụ 2: Tìm tất cả nhân viên có họ chứa "son"
SELECT first_name, last_name
FROM employees
WHERE last_name LIKE '%son%';Ví dụ 3: Tìm tất cả nhân viên có tên dài 5 ký tự
SELECT first_name, last_name
FROM employees
WHERE first_name LIKE '_____';Ví dụ 4: Tìm tất cả nhân viên có họ bắt đầu bằng "B" và kết thúc bằng "n"
SELECT first_name, last_name
FROM employees
WHERE last_name LIKE 'B%n';Ví dụ 5: Tìm tất cả nhân viên không có tên chứa ký tự "e"
SELECT first_name, last_name
FROM employees
WHERE first_name NOT LIKE '%e%';6. Một số lưu ý khi sử dụng LIKE trong MySQL
a. Không phân biệt chữ hoa, chữ thường
Trong hầu hết các hệ quản trị cơ sở dữ liệu, câu lệnh LIKEkhông phân biệt chữ hoa và chữ thường. Ví dụ, LIKE 'A%' sẽ trả về cả các giá trị bắt đầu bằng "A" và "a".
b. Sử dụng toán tử LIKE với các ký tự đại diện % và _
Khi sử dụng toán tử LIKE, ký tự % rất linh hoạt và có thể đại diện cho bất kỳ số lượng ký tự nào, trong khi _ đại diện cho một ký tự đơn.
c. Hiệu suất khi sử dụng LIKE
Sử dụng LIKE có thể ảnh hưởng đến hiệu suất khi tìm kiếm trên các bảng lớn, đặc biệt khi sử dụng ký tự % ở đầu mẫu ('%abc'). Khi có thể, hãy cân nhắc sử dụng các chỉ mục để tối ưu hóa hiệu suất.
d. Sử dụng toán tử ESCAPE để xử lý ký tự đặc biệt
Nếu bạn cần tìm các giá trị chứa các ký tự % hoặc _ thực sự, bạn có thể sử dụng toán tử ESCAPE để bỏ qua ký tự đặc biệt này.
Ví dụ:
SELECT first_name, last_name
FROM employees
WHERE first_name LIKE '100\%_profit' ESCAPE '\';Câu lệnh này tìm kiếm chuỗi chứa chính xác "100%_profit", với ký tự % và _ được xử lý như ký tự thông thường.
Kết luận
Câu lệnh LIKE trong SQL là một công cụ mạnh mẽ và linh hoạt để tìm kiếm các chuỗi ký tự trong cơ sở dữ liệu. Bạn có thể sử dụng LIKE kết hợp với các ký tự đại diện như % và _ để tìm kiếm các mẫu chuỗi khác nhau, từ các chuỗi bắt đầu, kết thúc, hoặc chứa một phần nhất định.
Hãy thử áp dụng các kiến thức này trong các bài tập và dự án thực tế trên CodeTutHub để thành thạo hơn trong việc tìm kiếm và thao tác dữ liệu với SQL!








