Toán tử LIKE trong MySQL
Trong hướng dẫn này, bạn sẽ học cách sử dụng toán tử LIKE
trong MySQL để truy vấn dữ liệu dựa trên một mẫu được chỉ định.
Giới thiệu về toán tử LIKE trong MySQL
Toán tử LIKE
là một toán tử logic để kiểm tra xem một chuỗi có chứa một mẫu được chỉ định hay không.
Đây là cú pháp của toán tử LIKE
:
expression LIKE pattern ESCAPE escape_character
Trong cú pháp này, nếu các giá trị expression
khớp với pattern
, thì toán tử LIKE
trả về 1. Ngược lại, nó trả về 0.
MySQL cung cấp hai ký tự đại diện để xây dựng các mẫu: phần trăm (%
) và dấu gạch dưới (_
).
- Ký tự đại diện phần trăm (
%
) khớp với bất kỳ chuỗi nào không hoặc nhiều ký tự. - Ký tự đại diện gạch dưới (
_
) khớp với bất kỳ ký tự đơn nào.
Ví dụ: s%
khớp với bất kỳ chuỗi nào bắt đầu bằng ký tự s
như sun
và six
. se_
khớp với bất kỳ chuỗi nào bắt đầu bằng se
và được theo sau bởi bất kỳ ký tự nào chẳng hạn như see
và sea
.
Khi mẫu có chứa ký tự đại diện và bạn muốn coi nó như một ký tự thông thường, bạn có thể sử dụng mệnh đề ESCAPE
.
Thông thường, bạn sẽ sử dụng toán tử LIKE
trong mệnh đề WHERE
của câu lệnh SELECT
, DELETE
và UPDATE
.
Ví dụ về toán tử LIKE trong MySQL
Hãy thực hành với một số ví dụ về việc sử dụng toán tử LIKE
. Chúng ta sẽ sử dụng bảng employees
sau từ cơ sở dữ liệu mẫu để trình diễn:
Sử dụng toán tử LIKE trong MySQL với ký tự đại diện phần trăm (%)
Ví dụ này sử dụng toán tử LIKE
để tìm nhân viên có tên bắt đầu bằng chữ cái a
:
SELECT
employeeNumber,
lastName,
firstName
FROM
employees
WHERE
firstName LIKE 'a%';
Đầu ra:
Trong ví dụ này, MySQL quét toàn bộ bảng employees
để tìm nhân viên có tên bắt đầu bằng chữ cái a
và theo sau là bất kỳ số ký tự nào.
Ví dụ này sử dụng toán tử LIKE
để tìm các nhân viên có họ kết thúc bằng chuỗi ký tự on
, ví dụ: Patterson
, Thompson
:
SELECT
employeeNumber,
lastName,
firstName
FROM
employees
WHERE
lastName LIKE '%on';
Đầu ra:
Để kiểm tra xem một chuỗi có chứa chuỗi con hay không, bạn có thể sử dụng ký tự đại diện phần trăm (%
) ở đầu và cuối chuỗi con.
Ví dụ: truy vấn sau sử dụng toán tử LIKE
để tìm tất cả nhân viên có họ chứa chuỗi con on
:
SELECT
employeeNumber,
lastName,
firstName
FROM
employees
WHERE
lastname LIKE '%on%';
Đầu ra:
Sử dụng toán tử LIKE trong MySQL với ký tự đại diện gạch dưới (_
)
Để tìm nhân viên có tên bắt đầu bằng chữ cái T
, kết thúc bằng chữ cái m
và chứa bất kỳ ký tự đơn nào giữa ví dụ: Tom
, Tim
, bạn sử dụng ký tự đại diện gạch dưới (_) để xây dựng mẫu như sau:
SELECT
employeeNumber,
lastName,
firstName
FROM
employees
WHERE
firstname LIKE 'T_m';
Đầu ra:
Sử dụng toán tử NOT LIKE trong MySQL
MySQL cho phép bạn kết hợp toán tử NOT
với toán tử LIKE
để tìm một chuỗi không khớp với một mẫu cụ thể.
Giả sử bạn muốn tìm kiếm những nhân viên có họ không bắt đầu bằng chữ cái B
, bạn có thể sử dụng toán tử NOT LIKE
như sau:
SELECT
employeeNumber,
lastName,
firstName
FROM
employees
WHERE
lastName NOT LIKE 'B%';
Đầu ra:
Lưu ý rằng mẫu không phân biệt chữ hoa chữ thường. Do đó, các mẫu
b%
vàB%
trả về cùng một kết quả.
Toán tử LIKE trong MySQL với mệnh đề ESCAPE
Đôi khi mẫu có thể chứa các ký tự đại diện, ví dụ: 10%, _20, v.v.
Trong trường hợp này, bạn có thể sử dụng mệnh đề ESCAPE
để chỉ định ký tự thoát để toán tử LIKE diễn giải ký tự đại diện dưới dạng ký tự chữ.
Nếu bạn không chỉ định ký tự thoát một cách rõ ràng, thì ký tự gạch chéo ngược () là ký tự thoát mặc định.
Ví dụ: nếu bạn muốn tìm các sản phẩm có mã sản phẩm chứa chuỗi _20
, bạn có thể sử dụng mẫu %_20%
có ký tự thoát mặc định:
SELECT
productCode,
productName
FROM
products
WHERE
productCode LIKE '%_20%';
Ngoài ra, bạn có thể chỉ định một ký tự thoát khác, ví dụ: $
bằng cách sử dụng mệnh đề ESCAPE
:
SELECT
productCode,
productName
FROM
products
WHERE
productCode LIKE '%$_20%' ESCAPE '$';
Đầu ra:
Mẫu %$_20%
khớp với bất kỳ chuỗi nào có chứa chuỗi _20
.
Tóm lược
- Sử dụng toán tử
LIKE
để kiểm tra xem một giá trị có khớp với một mẫu không. - Ký tự đại diện
%
khớp với không hoặc nhiều ký tự. - Ký tự đại diện
_
khớp với một ký tự. - Mệnh đề
ESCAPE
chỉ định một ký tự thoát khác với ký tự thoát mặc định ().
- Sử dụng toán tử
NOT LIKE
để phủ định toán tửLIKE
.