SQL | LIKE truy vấn động với LIKE trong SQL

Đôi lúc chúng ta cần lấy các bộ giá trị từ cơ sở dữ liệu phù hợp với một pattern có sẵn chứ không theo một giá trị cụ thể nào. Ví dụ chúng ta muốn lấy tất cả các dữ liệu từ bảng Student khi có tên bắt đầu bằng chữ H. Hoặc thậm chí có nhiều pattern phức tạp hơn nữa, thì chắc chắn đây là lúc LIKE phát huy hiệu quả sức mạnh của nó.

Trước tiên, chúng ta sẽ có 2 ký tự đại diện được sử dụng thường xuyên trong LIKE.

  • %: Được sử dụng để khớp với không hoặc nhiều ký tự. (Chiều dài thay đổi)
  • _: Dùng để khớp chính xác một ký tự. (Chiều dài cố định)
Sau đây là các quy tắc để đối sánh mẫu với Mệnh đề LIKE:
PATTERN MEANING
‘a%’ Khớp với chuỗi bắt đầu bằng ký tự a.
‘%a’ Khớp với chuỗi kết thúc bằng ký tự a.
‘a%t’ Khớp với chuỗi bắt đầu bằng ký tự a và kết thúc bởi ký tự t.
‘%wow%’ Khớp với chuỗi chứa chuỗi trong wow ở bất kỳ vị trí nào.
‘_wow%’ Khớp với chuỗi chứa chuỗi trong wow ở vị trí thứ 2 trong chuỗi.
‘_a%’ Khớp với chuỗi chứa ký tự  a tại vị trí thứ 2
‘a_ _%’ Khớp với chuỗi chứa ký tự  a tại vị trí đầu tiên và thêm ít nhất 2 ký tự. 

Giả sử chúng ta có mối quan hệ, Supplier. Chúng ta muốn kiểm tra các mẫu khác nhau bằng mệnh đề LIKE:

Supplier Table:

SUPPLIERID NAME ADDRESS
S1 Paragon Suppliers 21-3, Okhla, Delhi
S2 Mango Nation 21, Faridabad, Haryana
S3 Canadian Biz 6/7, Okhla Phase II, Delhi
S4 Caravan Traders 2-A, Pitampura, Delhi
S5 Harish and Sons Gurgaon, NCR
S6 Om Suppliers 2/1, Faridabad, Haryana
SELECT SupplierID, Name, Address
FROM Suppliers
WHERE Name LIKE 'Ca%';

Lấy tất cả các Supplier có tên bắt đầu bằng Ca.

Output:

S3	Canadian Biz	6/7, Okhla Phase II, Delhi
S4	Caravan Traders	2-A, Pitampura, Delhi

Output:

S3 Canadian Biz 6/7, Okhla Phase II, Delhi
S4 Caravan Traders 2-A, Pitampura, Delhi
SELECT SupplierID, Name, Address
FROM Suppliers
WHERE Name LIKE '_ango%';

Output:

S1 Paragon Suppliers 21-3, Okhla, Delhi
S3 Canadian Biz 6/7, Okhla Phase II, Delhi
SELECT *
FROM Suppliers
WHERE Address LIKE '%Okhla%';
0 0 vote
Article Rating
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x