Toán tử LIKE thường được sử dụng khi trích chọn dữ liệu theo một mẫu lọc nào đó. Trong bài học này, chúng ta sẽ tìm hiểu cách sử dụng toán tử LIKE như thế nào và khi nào nên tránh dùng toán tử LIKE để tăng tốc độ trích rút dữ liệu từ các bảng.
Toán tử LIKE thường được sử dụng trong mệnh đề WHERE của câu lệnh SELECT. MySQL cung cấp hai kí hiệu thay thế được sử dụng trong toán tử LIKE: · Kí hiệu (%) là kí tự đại diện cho một xâu bất kì · Kí hiệu (_) là kí tự đại diện cho một kí tự đơn lẻ duy nhất. |
Ví dụ 1
Tìm tất cả nhân viên trong bảng employees mà trường first name có giá trị bắt đầu bằng chữ a. Câu truy vấn như sau:
SELECT employeeNumber, lastName, firstName
FROM employees
WHERE firstName LIKE 'a%'
|
Lý giải
MySQL quét toàn bộ bảng employees để tìm ra các nhân viên mà giá trị của trường firstname bắt đầu bằng chữ a.
(Video minh họa) |
Ví dụ 2
Tìm tất cả nhân viên mà giá trị của trường lastname kết thúc bằng ‘on’.
SELECT employeeNumber, lastName, firstName
FROM employees
WHERE lastName LIKE '%on'
(Video minh họa) |
Ví dụ 3
Tìm tất cả nhân viên trong bảng employees mà giá trị của trường lastname có chứa ‘on’
SELECT employeeNumber, lastName, firstName
FROM employees
WHERE lastName LIKE '%on%'
(Video minh họa) |
Ví dụ 4
Tìm tất cả nhân viên trong bảng employees có tên dạng Tom, Tim, Tam, …
SELECT employeeNumber, lastName, firstName
FROM employees
WHERE firstName LIKE 'T_m'
(Video minh họa)MySQL cho phép bạn dùng toán tử NOT kết hợp với toán tử LIKE. |
Ví dụ 5
Tìm tất cả nhân viên mà giá trị của trường lastname không bắt đầu bằng kí tự B.
SELECT employeeNumber, lastName, firstName
FROM employees
WHERE lastName NOT LIKE 'B%'
(Video minh họa)Chú ý: toán tử LIKE không phân biệt chữ hoa hay chữ thường. Điều gì sẽ xảy ra nếu bạn muốn tìm kiếm những bảng ghi mà trong điều kiện lọc lại có chứa kí tự thay thế? |
Ví dụ 6
Tìm tất cả sản phẩm có mà giá trị của trường productCode có chứa ‘_20’.
SELECT productCode, productName
FROM products
WHERE productCode LIKE '%\_20%'
Lưu ý: do SQL LIKE quét toàn bộ bảng dữ liệu để tìm những bảng ghi thỏa mãn yêu cầu tìm kiếm nên nó không cho phép máy chủ dữ liệu sử dụng chỉ mục trong quá trình tìm kiếm này. Khi dữ liệu trong bảng là đủ lớn thì hiệu năng của toán tử SQL LIKE sẽ giảm đi. Trong một vài trường hợp bạn cần tránh sử dụng SQL LIKE mà thay vào đó bằng những kĩ thuật khác để đạt được kết quả tương tự như SQL LIKE. |
Ví dụ 7
Tìm tất cả nhân viên trong bảng employees mà giá trị của trường firstname bắt đầu bằng kí tự ‘b’
SET @str = 'b';
SELECT employeeNumber, lastName, firstName
FROM employees
WHERE LEFT(lastname,length(@str)) = @str;
Hay: Tìm tất cả nhân viên mà giá trị của trường lastname kết thúc bằng ‘on’.
SET @str = 'on';
SELECT employeeNumber, lastName, firstName
FROM employees
WHERE RIGHT (lastname,length(@str)) = @str;
|
0 nhận xét: