Dùng LIKE operator trong SQL

Dùng LIKE operator trong SQL

Đô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)

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ạ.

PatternMeaning
‘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
Một số ví dụ

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:

userIDtendia_chi
1Nguyễn Văn Aquận B,Sài gòn
2Trần Thị BQuận B,TPHCM
3Nguyễn Thị BHà Nội
4Nông Văn CHội An
5Nông Cạn Thội An
6Nông Nỗi KQuận C, Huế
Dữ liệu khách hàng

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:

userIDtendia_chi
1Nguyễn Văn Aquận B,Sài gòn
2Trần Thị BQuận B,TPHCM
6Nông Nỗi KQuận C, Huế
Dữ liệu khách hàng

Ứ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.

Leave a Comment

Scroll to Top