Wildcard hay ký tự đại diện trong SQL. Chúng ta đã thảo luận về toán tử LIKE trong SQL, được sử dụng để so sánh một giá trị với các giá trị tương tự sử dụng các toán tử đại diện (wildcard).
SQL hỗ trợ hai toán tử đại diện kết hợp với toán tử LIKE được giải thích chi tiết trong bảng sau.
No. | Wildcard & Mô tả |
---|---|
1 | Phần trăm (%) Phù hợp với một hoặc nhiều ký tự. Lưu ý - MS Access sử dụng ký tự đại diện dấu hoa thị (*) thay vì ký tự đại diện phần trăm (%) ký tự đại diện. |
2 | Dấu gạch dưới (_) Phù hợp với một ký tự. Lưu ý - MS Access sử dụng dấu chấm hỏi (?) Thay vì gạch dưới (_) để khớp với bất kỳ ký tự nào. |
Dấu phần trăm thể hiện không, một hoặc nhiều ký tự. Dấu gạch dưới đại diện cho một số hoặc một ký tự. Những ký hiệu này có thể được sử dụng trong sự kết hợp.
Cú pháp
Cú pháp cơ bản của toán tử '%' và '_' như sau.
SELECT FROM table_name WHERE column LIKE 'XXXX%'or SELECT FROM table_name WHERE column LIKE '%XXXX%'orSELECT FROM table_name WHERE column LIKE 'XXXX_'orSELECT FROM table_name WHERE column LIKE '_XXXX'orSELECT FROM table_name WHERE column LIKE '_XXXX_'
Bạn có thể kết hợp N số điều kiện bằng toán tử AND hoặc OR. Ở đây, XXXX có thể là bất kỳ giá trị số hay chuỗi nào.
Ví dụ
Bảng dưới đây có một số ví dụ cho thấy phần WHERE có các mệnh đề LIKE khác nhau với các toán tử '%' và '_'.
No. | Lệnh và mô tả |
---|---|
1 | WHERE SALARY LIKE '200%' Tìm bất kỳ giá trị nào bắt đầu bằng 200. |
2 | WHERE SALARY LIKE '%200%' Tìm bất kỳ giá trị nào có 200 vị trí bất kỳ. |
3 | WHERE SALARY LIKE '_00%' Tìm bất kỳ giá trị nào có 00 ở vị trí thứ hai và thứ ba. |
4 | WHERE SALARY LIKE '2_%_%' Tìm bất kỳ giá trị nào bắt đầu bằng 2 và có ít nhất 3 ký tự. |
5 | WHERE SALARY LIKE '%2' Tìm bất kỳ giá trị nào kết thúc bằng 2. |
6 | WHERE SALARY LIKE '_2%3' Tìm bất kỳ giá trị nào có vị trí 2 ở vị trí thứ hai và kết thúc bằng 3. |
7 | WHERE SALARY LIKE '2___3' Tìm bất kỳ giá trị nào trong số năm chữ số bắt đầu bằng 2 và kết thúc bằng 3. |
Ví dụ, xem bảng CUSTOMERS có các bản ghi sau đây.
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ha Anh | 32 | Da Nang | 2000.00 | | 2 | Van Ha | 25 | Ha Noi | 1500.00 | | 3 | Vu Bang | 23 | Vinh | 2000.00 | | 4 | Thu Minh | 25 | Ha Noi | 6500.00 | | 5 | Hai An | 27 | Ha Noi | 8500.00 | | 6 | Hoang | 22 | Ha Noi | 4500.00 | | 7 | Binh | 24 | Ha Noi | 10000.00 | +----+----------+-----+-----------+----------+
Khối mã sau đây là một ví dụ, hiển thị tất cả các bản ghi từ bảng CUSTOMERS, nơi SALARY bắt đầu với 200.
SELECT * FROM CUSTOMERS WHERE SALARY LIKE '200%';
Điều này sẽ tạo ra kết quả sau.
+----+----------+-----+-----------+----------+ | ID | NAME | AGE | ADDRESS | SALARY | +----+----------+-----+-----------+----------+ | 1 | Ha Anh | 32 | Da Nang | 2000.00 | | 3 | Vu Bang | 23 | Vinh | 2000.00 | +----+----------+-----+-----------+----------+