1. Ký tự đại diện Wildcards

Một ký tự đại diện được sử dụng để thay thế một hoặc nhiều ký tự trong một chuỗi. Các ký tự đại diện được sử dụng với toán tử LIKE. Toán tử LIKE được sử dụng trong mệnh đề WHERE để tìm kiếm một mẫu được chỉ định trong một cột.

Bảng dưới đây liệt kê ra một số ký tự đại diện Wildcards trong SQL Server

Ký tự Mô tả Ví dụ
% Đại diện cho không hoặc nhiều ký tự Ha% sẽ có thể là: Ha Noi, Ha Nam, Hai Duong…
_ Đại diện cho một ký tự duy nhất N_m sẽ có thể là: Nam, Năm, Nấm…
[] Đại diện cho bất kỳ ký tự đơn nào trong dấu ngoặc [] h[oa]t sẽ có thể là: hot và hat
^ Đại diện cho bất kỳ ký tự nào không có trong dấu ngoặc h[^oa]t sẽ có thể là hit, hut, nhưng không thể là hot và hat
Đại diện cho bất kỳ ký tự đơn lẻ nào trong phạm vi được chỉ định c[a-d]t sẽ có thể là cat, cbt, cct và cdt

Tất cả các ký tự đại diện ở trên cũng có thể được sử dụng kết hợp với một số toán tử khác. 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 Operator Description
WHERE ColumnName LIKE ‘a%’ Tìm bất kỳ giá trị nào trong cột bắt đầu với “a”
WHERE ColumnName LIKE ‘%a’ Tìm bất kỳ giá trị nào trong cột kết thúc với “a”
WHERE ColumnName LIKE ‘%or%’ Tìm bất kỳ giá trị nào có từ “or” ở bất kỳ vị trí nào
WHERE ColumnName LIKE ‘_r%’ Tìm bất kỳ giá trị nào có “r” ở vị trí tiếp theo
WHERE ColumnName 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 ColumnName LIKE ‘a__%’ Tìm bất kỳ giá trị nào bắt đầu bằng “a” và có độ dài ít nhất 3 ký tự
WHERE ColumnName 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”

2. Ví dụ ký hiệu đại diện Wildcards

Dưới đây là bảng KhachHang bao gồm các cột: ID, TenKH, DiaChi, ThanhPho, SoDienThoai

ID TenKH DiaChi ThanhPho SoDienThoai
1 Nguyen Van A Tay Ho Ha Noi 0888999888
2 Nguyen Van B Quan 5 Ho Chi Minh 0988988988
3 Nguyen Van C Quan 7 Ho Chi Minh 0899899899
4 Nguyen Van D Bac Tu Liem Ha Noi 0788788788
5 Nguyen Van E Ngo Quen Hai Phong 0858585858
6 Nguyen Van F Ngu Hanh Son Da Nang 0969696969
7 Nguyen Van G Tay Ho Ha Noi 0838383838

Câu lệnh SQL dưới đây sử dụng ký tự đại diện Ha% để lấy ra các khách hàng có thành phố bắt đầu bằng ký tự “Ha”

SELECT * FROM KhachHang
WHERE ThanhPho LIKE 'Ha%';

Kết quả:

ID TenKH DiaChi ThanhPho SoDienThoai
1 Nguyen Van A Tay Ho Ha Noi 0888999888
4 Nguyen Van D Bac Tu Liem Ha Noi 0788788788
5 Nguyen Van E Ngo Quen Hai Phong 0858585858
7 Nguyen Van G Tay Ho Ha Noi 0838383838

Câu lệnh SQL sau chọn tất cả khách hàng có địa chỉ bao gồm ký tự “Qu” ở bất kỳ vị trí nào:

SELECT * FROM KhachHang 
WHERE DiaChi LIKE '%Qu%';

Kết quả:

ID TenKH DiaChi ThanhPho SoDienThoai
2 Nguyen Van B Quan 5 Ho Chi Minh 0988988988
3 Nguyen Van C Quan 7 Ho Chi Minh 0899899899
5 Nguyen Van E Ngo Quen Hai Phong 0858585858

Câu lệnh SQL sau sử dụng ký hiệu “_a Noi” chọn tất cả khách hàng có thành phố bắt đầu bằng bất kỳ ký tự nào, theo sau là chuỗi ký tự “a Noi“:

SELECT * FROM KhachHang
WHERE ThanhPho LIKE '_a Noi';

Kết quả:

ID TenKH DiaChi ThanhPho SoDienThoai
1 Nguyen Van A Tay Ho Ha Noi 0888999888
4 Nguyen Van D Bac Tu Liem Ha Noi 0788788788
7 Nguyen Van G Tay Ho Ha Noi 0838383838

Câu lệnh SQL sau chọn tất cả khách hàng có tên kết thúc bằng các ký tự “a“, “b” hoặc “c”:

SELECT * FROM KhachHang
WHERE TenKH LIKE '%[a-c]';

Kết quả:

ID TenKH DiaChi ThanhPho SoDienThoai
1 Nguyen Van A Tay Ho Ha Noi 0888999888
2 Nguyen Van B Quan 5 Ho Chi Minh 0988988988
3 Nguyen Van C Quan 7 Ho Chi Minh 0899899899
Câu lệnh SQL sau đây chọn tất cả các khách hàng có tên KHÔNG kết thúc bằng “a”, “b” hoặc “c”:
SELECT * FROM KhachHang 
WHERE TenKH NOT LIKE '%[abc]';

Kết quả:

ID TenKH DiaChi ThanhPho SoDienThoai
4 Nguyen Van D Bac Tu Liem Ha Noi 0788788788
5 Nguyen Van E Ngo Quen Hai Phong 0858585858
6 Nguyen Van F Ngu Hanh Son Da Nang 0969696969
7 Nguyen Van G Tay Ho Ha Noi 0838383838