1. Giới thiệu
Wildcards trong MySQL là các ký tự đặc biệt được sử dụng với câu lệnh LIKE để tìm kiếm các mẫu ký tự trong cơ sở dữ liệu. Wildcards rất hữu ích khi bạn cần tìm kiếm các bản ghi dựa trên chuỗi ký tự không xác định chính xác, ví dụ như tìm kiếm các từ bắt đầu bằng một chữ cái cụ thể hoặc chứa một chuỗi con nhất định.
Trong bài viết này, chúng ta sẽ tìm hiểu chi tiết cách sử dụng SQL Wildcards với các ví dụ minh họa, để giúp bạn dễ dàng áp dụng trong các truy vấn MySQL.
2. Các ký tự Wildcards trong MySQL
Trong SQL, hai ký tự wildcards chính thường được sử dụng với câu lệnh LIKE:
%: Đạ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.
3. Bảng dữ liệu giả đị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 |
4. Cách sử dụng SQL Wildcards
a. Ký tự % đại diện cho bất kỳ số lượng ký tự nào
Ký tự % được sử dụng để đại diện cho bất kỳ chuỗi ký tự nào, bao gồm cả chuỗi rỗng. Bạn có thể dùng % ở bất kỳ vị trí nào trong mẫu tìm kiếm của mình.
1. Tìm kiếm chuỗi bắt đầu bằng 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 bằng một ký tự hoặc một chuỗi cụ thể, bạn có thể sử dụng % ở cuối chuỗi.
Ví dụ 1: Tìm tất cả cá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 |
2. Tìm kiếm chuỗi kết thúc bằng 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 bằng một ký tự cụ thể, bạn có thể sử dụng % ở đầu:
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 |
3. Tìm kiếm chuỗi chứa một chuỗi con cụ thể
Sử dụng % ở cả hai bên để tìm kiếm các chuỗi chứa chuỗi con ở bất kỳ vị trí nào.
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 |
b. Ký tự _ đại diện cho một ký tự đơn
Ký tự _ đại diện cho một ký tự đơn, và nó được sử dụng khi bạn muốn khớp một ký tự cụ thể tại một vị trí nhất định.
1. Tìm kiếm với một ký tự đơn bất kỳ
Sử dụng _ để đại diện cho một ký tự tại một vị trí nhất định.
Ví dụ 4: Tìm tất cả nhân viên có tên gồm 4 ký tự và kết thúc bằng "e"
SELECT first_name, last_name
FROM employees
WHERE first_name LIKE '___e';Kết quả:
| first_name | last_name |
|---|---|
| Jane | Smith |
c. Sử dụng NOT LIKE để tìm kiếm mẫu không khớp
Bạn có thể sử dụng NOT LIKE để tìm các bản ghi không khớp với mẫu ký tự nhất định.
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 |
5. Các ví dụ về sử dụng SQL Wildcards
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 SQL Wildcards
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. Hiệu suất khi sử dụng Wildcards
Khi sử dụng LIKE với Wildcards, đặc biệt là khi sử dụng % ở đầu mẫu ('%abc'), hiệu suất có thể bị ảnh hưởng, đặc biệt với các bảng lớn. Cân nhắc sử dụng chỉ mục (index) để cải thiện hiệu suất.
c. Sử dụng toán tử ESCAPE để xử lý ký tự đặc biệt
Nếu bạn cần tìm kiế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
SQL Wildcards là một công cụ mạnh mẽ để tìm kiếm chuỗi ký tự trong cơ sở dữ liệu, cho phép bạn tìm kiếm linh hoạt các mẫu ký tự khác nhau. Sử dụng kết hợp LIKE với % và _ giúp bạn tìm kiếm các chuỗi theo nhiều mẫu khác nhau. Wildcards đặc biệt hữu ích khi làm việc với dữ liệu chuỗi và cần thực hiện các truy vấn phức tạp.
Hãy thử áp dụng các ví dụ trong bài viết này vào các bài tập và dự án thực tế của bạn trên CodeTutHub để nắm vững hơn về cách làm việc với SQL Wildcards!








