Bài này cafedev chia sẻ cho ace về cách sử dụng Toán tử Wildcards trong SQL để lấy ra dữ liệu theo ý muốn của mình.

Lưu ý: Các bạn tham khảo bài giới thiệu này để lấy dữ liệu mẫu và chạy các ví dụ của toàn bộ series này nha. Khi bạn thực hành mà không tìm thấy kết quả và không xảy ra lỗi thì có thể dữ liệu của bạn không tồn tại, vì vậy, bạn có thể insert thêm data vào bảng và thực hành lại nha.

1. Ký tự Wildcards là gì?

Một ký tự Wildcards được sử dụng để thay thế một hoặc nhiều ký tự trong một chuỗi.

Các ký tự Wildcards được sử dụng với toán tử LIKE SQL. Toán tử LIKE được sử dụng trong mệnh đề WHERE để tìm kiếm một mẫu cụ thể trong một cột.

2. Ký tự Wildcards trong MS Access

Ký hiệu. Mô tảVí dụ
*Đại diện cho không hoặc nhiều ký tựbl* sẽ tìm thấy bl, black, blue, and blob
?Đại diện cho một ký tựh?t sẽ tìm thấy hot, hat, and hit
[]Đại diện cho bất kỳ ký tự đơn nào trong dấu ngoặch[oa]t sẽ tìm thấy hot and hat, but not hit
!Đại diện cho bất kỳ ký tự nào không có trong dấu ngoặch[!oa]t sẽ tìm thấy hit, but not hot and hat
Đại diện cho một loạt các ký tực[a-b]t sẽ tìm thấy cat and cbt
#Đại diện cho bất kỳ ký tự số đơn lẻ nào2#5 sẽ tìm thấy 205, 215, 225, 235, 245, 255, 265, 275, 285, and 295

3. Ký tự Wildcards trong SQL Server

Ký hiệu. Mô tảVí dụ
%Đại diện cho không hoặc nhiều ký tựbl% sẽ tìm thấy bl, black, blue, and blob
_Đại diện cho một ký tựh_t sẽ tìm thấy hot, hat, and hit
[]Đại diện cho bất kỳ ký tự đơn nào trong dấu ngoặch[oa]t sẽ tìm thấy hot and hat, but not hit
^Đại diện cho bất kỳ ký tự nào không có trong dấu ngoặch[^oa]t sẽ tìm thấy hit, but not hot and hat
Đại diện cho một loạt các ký tực[a-b]t sẽ tìm thấy cat and cbt

Tất cả các ký tự wildcards cũng có thể được sử dụng kết hợp!

Dưới đây là một số ví dụ hiển thị các toán tử LIKE khác nhau với các ký tự đại diện ‘%’ và ‘_’:

LIKE OperatorDescription
WHERE CustomerName LIKE ‘a%’Tìm bất kỳ giá trị nào bắt đầu bằng “a”
WHERE CustomerName LIKE ‘%a’Tìm bất kỳ giá trị nào kết thúc bằng “a”
WHERE CustomerName LIKE ‘%or%’Tìm bất kỳ giá trị nào có “hoặc” ở bất kỳ vị trí nào
WHERE CustomerName LIKE ‘_r%’Tìm bất kỳ giá trị nào có “r” ở vị trí thứ hai
WHERE CustomerName LIKE ‘a_%’Tìm bất kỳ giá trị nào bắt đầu bằng “a” và có ít nhất 2 ký tự
WHERE CustomerName LIKE ‘a__%’Tìm bất kỳ giá trị nào bắt đầu bằng “a” và có ít nhất 3 ký tự
WHERE ContactName LIKE ‘a%o’Tìm bất kỳ giá trị nào bắt đầu bằng “a” và kết thúc bằng “o”

4. Ví dụ

  • Câu lệnh SQL sau chọn tất cả khách hàng có CustomerName bắt đầu bằng “a”:
SELECT * FROM Customers
WHERE CustomerName LIKE 'a%'; 
  • Câu lệnh SQL sau chọn tất cả các khách hàng có CustomerName kết thúc bằng “a”:
/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

 SELECT * FROM Customers
WHERE CustomerName LIKE '%a';
  • Câu lệnh SQL sau đây chọn tất cả khách hàng có CustomerName có “or” ở bất kỳ vị trí nào:
SELECT * FROM Customers
WHERE CustomerName LIKE '%or%';
  • Câu lệnh SQL sau chọn tất cả khách hàng có CustomerName có “r” ở vị trí thứ hai:
SELECT * FROM Customers
WHERE CustomerName LIKE '_r%';
  • Câu lệnh SQL sau đây chọn tất cả khách hàng có CustomerName bắt đầu bằng “a” và có ít nhất 3 ký tự:
SELECT * FROM Customers
WHERE CustomerName LIKE 'a__%';
  • Câu lệnh SQL sau đây chọn tất cả khách hàng có Tên liên hệ bắt đầu bằng “a” và kết thúc bằng “o”:
SELECT * FROM Customers
WHERE ContactName LIKE 'a%o'; 
  • Câu lệnh SQL sau đây chọn tất cả khách hàng có CustomerName KHÔNG bắt đầu bằng “a”:
SELECT * FROM Customers
WHERE CustomerName NOT LIKE 'a%';

Lưu ý: Các bạn tham khảo bài giới thiệu này để lấy dữ liệu mẫu và chạy các ví dụ của toàn bộ series này nha. Khi bạn thực hành mà không tìm thấy kết quả và không xảy ra lỗi thì có thể dữ liệu của bạn không tồn tại, vì vậy, bạn có thể insert thêm data vào bảng và thực hành lại nha.

Full series tự học SQL từ cơ bản tới nâng cao tại đây nha.

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!