Toán tử LIKE SQL
Từ khóa LIKE rất hữu ích dùng trong mệnh đề WHERE để tạo ra biểu thức điều kiện tìm kiểm.
Cú pháp cơ bản như sau:
SELECT * FROM Khachhang WHERE HoTen LIKE 'm%'
Với pattern là mẫu tìm kiếm, các dòng có dữ liệu cột column_name
phù hợp với mẫu trả về TRUE.
Mẫu pattern
dùng các ký hiệu _
đại diện ký tự, ký hiệu %
để đại diện cho có hoặc không một hay nhiều ký tự.
Để rõ hơn xem một số trường hợp sau:
LIKE Operator | Diễn tả |
---|---|
WHERE CustomerName LIKE 'a%' | Tất các các giá trị bắt đầu bằng ký tự "a" |
WHERE CustomerName LIKE '%a' | Tất cả giá trị kết thúc bằng ký tự "a" |
WHERE CustomerName LIKE '%or%' | Bất kỳ giá trị nào có chứa "or" bên trong |
WHERE CustomerName LIKE '_r%' | Các giá trị có chứa "r" ở vị trí thứ 2 |
WHERE CustomerName LIKE 'a_%_%' | Giá trị bắt đầu bằng "a" và có chiều dài tối thiểu 3 |
WHERE ContactName LIKE 'a%o' | Giá trị bắt dầu bằng "a" và kết thúc bằng "o" |
Ví dụ 1 (LIKE)
Tìm họ tên bắt đầu bằng ký tự m trong danh sách khách hàng ở bảng Khachhang
SELECT * FROM Khachhang WHERE HoTen LIKE 'm%';
Kết quả
KhachhangID | HoTen | TenLienLac | Diachi | Thanhpho | MaBuudien | QuocGia |
---|---|---|---|---|---|---|
11 | Mạc Trung Đức | Mạc Trung Đức | ivwfcu Đồng Nai | Đồng Nai | 500 | Việt Nam |
20 | Mai Tùng Bách | Mai Tùng Bách | fxrtrx Đồng Tháp | Đồng Tháp | 100 | Đức |
Có một file CSDL mẫu dạng SQLite, bạn có thể tải về thực hành: CSDL SQLite mẫu.
Ví dụ 2 (LIKE)
Tìm các khách hàng mà tên không có chứa thị
ở bảng Khachhang
SELECT * FROM Khachhang WHERE HoTen NOT LIKE '%thị%'
Chú ý có sử dụng thêm toán tử phủ định NOT
Kết quả
KhachhangID | HoTen | TenLienLac | Diachi | Thanhpho | MaBuudien | QuocGia |
---|---|---|---|---|---|---|
1 | Đặng Tuấn Anh | Đặng Tuấn Anh | nkhbiq Bà Rịa - Vũng Tàu | Bà Rịa - Vũng Tàu | 222 | Đức |
2 | Hoàng Đức Anh | Hoàng Đức Anh | u Kiên Giang | Kiên Giang | 100 | Đức |
3 | Lưu Trang Anh | Lưu Trang Anh | h Gia Lai | Gia Lai | 222 | Mỹ |