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ỹ |
