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