Đôi lúc chúng ta cần phải lọc text theo một vài điều kiện nhất định để lấy ra những dòng dữ liệu mong muốn. Chúng ta sẽ sử dụng hàm LIKE ngay lúc đó.
SELCT * FROM table_name WHERE column_name like '%something%'
Phía trên là ví dụ để tìm ra dòng dữ liệu có từ ‘something’ bất kì trong đoạn văn bản ví dụ ‘I eat something’ thì dòng dữ liệu đó sẽ được trả về.
Trong đó kí hiệu ‘%’ được gọi là một pattern (kiểu mẫu)
Table of Contents
Các LIKE pattern có thể dùng
- % : Dùng để đại diện nhiều kí tự cùng 1 lúc. (Độ dài linh động)
- _ : Dùng để đại diện đúng 1 kí tự. (Độ dài cố định)
Một số ví dụ minh hoạ.
Pattern | Meaning |
---|---|
‘a%’ | Khớp dòng bắt đầu bằng chữ a, ví dụ: apple, anker,… |
‘%a’ | Khớp dòng kết thúc bằng chữ a, ví dụ: banana, contra,….. |
‘a%t’ | Khớp dòng bắt đầu bằng a và kết thúc bằng t, ví dụ: ‘angry cat’ |
‘%wow%’ | Khớp dòng có chuỗi wow nằm ở bất kì vị trí nào trong câu, ví dụ : ‘Oh wow majesty’ |
‘_wow%’ | Có từ wow bắt đầu tự vị trí thứ 2, ví dụ: ‘Awow string’ |
‘_a%’ | Có chữ a bắt đầu tự vị trí thứ 2, ví dụ: ‘aastring’ |
‘a_ _%’ | Bắt đầu bằng chữ a và có ít nhất 3 kí tự, ví dụ: ‘abc‘,’aaa‘ |
Ví dụ
Chúng ta có dữ liệu khách hàng trong bảng sau. Hãy tìm các khách hàng có địa chỉ chi tiết hơn mức thành phố.
khach_hang_db:
userID | ten | dia_chi |
---|---|---|
1 | Nguyễn Văn A | quận B,Sài gòn |
2 | Trần Thị B | Quận B,TPHCM |
3 | Nguyễn Thị B | Hà Nội |
4 | Nông Văn C | Hội An |
5 | Nông Cạn T | hội An |
6 | Nông Nỗi K | Quận C, Huế |
Dễ dàng thấy trong bảng dữ liệu, các khách hàng có địa chỉ chi tiết hơn mức thành phố có dấu phẩy bên trong cột dia_chi
SELECT *
FROM db_khach_hang
WHERE dia_chi LIKE '%,%';
output:
userID | ten | dia_chi |
---|---|---|
1 | Nguyễn Văn A | quận B,Sài gòn |
2 | Trần Thị B | Quận B,TPHCM |
6 | Nông Nỗi K | Quận C, Huế |
Ứng dụng
Ví dụ trên của mình không mô tả cách sử dụng sát thực tế lắm tuy nhiên mình chọn vì khá đơn giản và dễ hiểu.
Thông thường, LIKE operator thường được sử dụng để khớp các hàng dữ liệu text có giá trị kì vọng cụ thể (số điện thoại, địa chỉ, tên,…). Nếu giá trị không lọt vào các kì vọng ban đầu đề ra thì có thể dữ liệu không đúng và cần được check lại.