Ký tự đại diện là gì?
Ký tự đại diện là các ký tự giúp tìm kiếm dữ liệu phù hợp với tiêu chí phức tạp. Ký tự đại diện được sử dụng cùng với toán tử so sánh THÍCH hoặc toán tử so sánh KHÔNG THÍCH.
Tại sao nên sử dụng WildCards?
Nếu bạn quen với việc sử dụng SQL, bạn có thể nghĩ rằng bạn có thể tìm kiếm bất kỳ dữ liệu phức tạp nào bằng mệnh đề SELECT và WHERE. Vậy thì tại sao lại sử dụng Wildcards?
Trước khi chúng tôi trả lời câu hỏi đó, chúng ta hãy xem một ví dụ. Giả sử rằng bộ phận tiếp thị của thư viện video Myflix đã thực hiện các chương trình khuyến mãi tiếp thị ở thành phố Texas và muốn nhận được một số phản hồi về số lượng thành viên
đã đăng ký từ Texas, bạn có thể sử dụng câu lệnh CHỌN sau đây cùng với mệnh đề WHERE để có được thông tin mong muốn.
SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';
Như bạn có thể thấy từ truy vấn trên, "mệnh đề WHERE" trở nên phức tạp. Tuy nhiên, sử dụng ký tự đại diện, đơn giản hóa truy vấn vì chúng ta có thể sử dụng một cái gì đó đơn giản như tập lệnh được hiển thị bên dưới.
SELECT * FROM members WHERE postal_address like '% TX';
Nói tóm lại, ký tự đại diện cho phép chúng tôi phát triển các công cụ tìm kiếm năng lượng vào các ứng dụng điều khiển dữ liệu của mình.
Các loại ký tự đại diện
% tỉ lệ phần trăm
% ký tự tỷ lệ phần trăm được sử dụng để chỉ định mẫu có 0 (0) hoặc nhiều ký tự hơn . Nó có cú pháp cơ bản sau.
SELECT statements... WHERE fieldname LIKE 'xxx%';
ĐÂY
- "SELECT statement..." là lệnh SQL SELECT tiêu chuẩn.
- "WHERE" là từ khóa được sử dụng để áp dụng bộ lọc.
- "LIKE" là toán tử so sánh được sử dụng cùng với ký tự đại diện
- 'xxx' là bất kỳ mẫu bắt đầu được chỉ định nào, chẳng hạn như một ký tự đơn trở lên và "%" khớp với bất kỳ số lượng ký tự nào bắt đầu từ 0 (0).
Để đánh giá đầy đủ tuyên bố trên, chúng ta hãy xem một ví dụ thực tế
Giả sử chúng tôi muốn lấy tất cả các phim có từ "mã" làm tiêu đề, chúng tôi sẽ sử dụng ký tự đại diện phần trăm để thực hiện khớp mẫu trên cả hai mặt của từ "mã". Dưới đây là câu lệnh SQL có thể được sử dụng để đạt được kết quả mong muốn.
SELECT * FROM movies WHERE title LIKE '%code%';
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với myflixdb cho chúng ta kết quả được hiển thị bên dưới.
movie_id | title | director | year_released | category_id |
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
7 | Davinci Code | NULL | NULL | 6 |
Lưu ý rằng ngay cả khi từ khóa tìm kiếm "mã" xuất hiện ở đầu hoặc cuối tiêu đề, nó vẫn được trả về trong tập kết quả của chúng tôi. Điều này là do mã của chúng tôi bao gồm bất kỳ số lượng ký tự nào ở đầu sau đó khớp với "mã" mẫu theo sau bởi bất kỳ số lượng ký tự nào ở cuối.
Bây giờ chúng ta hãy sửa đổi tập lệnh trên của chúng tôi để chỉ bao gồm ký tự đại diện phần trăm ở đầu tiêu chí tìm kiếm.
SELECT * FROM movies WHERE title LIKE '%code';
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với myflixdb cho chúng ta kết quả được hiển thị bên dưới.
movie_id | title | director | year_released | category_id |
7 | Davinci Code | NULL | NULL | 6 |
Lưu ý rằng chỉ có một bản ghi đã được trả về từ cơ sở dữ liệu. Điều này là do mã của chúng tôi khớp với bất kỳ số lượng ký tự nào ở đầu tiêu đề phim và chỉ nhận được các bản ghi kết thúc bằng "mã" mẫu.
Bây giờ chúng ta hãy chuyển ký tự đại diện phần trăm sang cuối mẫu đã chỉ định để khớp. Kịch bản sửa đổi được hiển thị dưới đây.
SELECT * FROM movies WHERE title LIKE 'code%';
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với myflixdb cho chúng ta kết quả được hiển thị bên dưới.
| |
movie_id | title | director | year_released | category_id |
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
| | |
Thông báo chỉ có một bản ghi đã được trả về từ cơ sở dữ liệu. Điều này là do mã của chúng tôi khớp với tất cả các tiêu đề bắt đầu bằng mẫu "mã" theo sau bởi bất kỳ số lượng ký tự nào.
_ ký tự đại diện
Ký tự đại diện gạch dưới được sử dụng để khớp chính xác một ký tự . Giả sử rằng chúng tôi muốn tìm kiếm tất cả các bộ phim được phát hành trong những năm 200x trong đó x chính xác là một nhân vật có thể là bất kỳ giá trị nào. Chúng tôi sẽ sử dụng thẻ hoang dã gạch dưới để đạt được điều đó. Kịch bản dưới đây chọn tất cả các bộ phim được phát hành trong năm "200x"
SELECT * FROM movies WHERE year_released LIKE '200_';
Việc thực thi đoạn script trên trong bàn làm việc của MySQL đối với myflixdb cho chúng ta kết quả được hiển thị bên dưới.
movie_id | title | director | year_released | category_id |
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
9 | Honey mooners | Jhon Shultz | 2005 | 8 |
Lưu ý rằng chỉ những bộ phim có 200 người theo dõi bởi bất kỳ nhân vật nào trong năm thực địa được phát hành mới được trả lại trong tập kết quả của chúng tôi. Điều này là do ký tự đại diện gạch dưới khớp với mẫu 200 theo sau bởi bất kỳ ký tự đơn nào
Không thích
Toán tử logic logic có thể được sử dụng cùng với các ký tự đại diện để trả về các hàng không khớp với mẫu đã chỉ định.
Giả sử chúng tôi muốn có được những bộ phim chưa được phát hành trong năm 200 lần. Chúng tôi sẽ sử dụng toán tử KHÔNG logic cùng với ký tự đại diện gạch dưới để nhận kết quả. Dưới đây là kịch bản làm điều đó.
SELECT * FROM movies WHERE year_released NOT LIKE '200_';
movie_id | title | director | year_released | category_id |
1 | Pirates of the Caribean 4 | Rob Marshall | 2011 | 1 |
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
8 | Underworld-Awakeninh | Michahel Eal | 2012 | 6 |
Chỉ lưu ý rằng những bộ phim không bắt đầu với 200 trong năm phát hành đã được trả lại trong tập kết quả của chúng tôi. Điều này là do chúng tôi đã sử dụng toán tử KHÔNG logic trong tìm kiếm mẫu ký tự đại diện.
Từ khóa thoát.
Từ khóa ESCAPE được sử dụng để thoát các ký tự khớp mẫu như phần trăm (%) và dấu gạch dưới (_) nếu chúng tạo thành một phần của dữ liệu.
Giả sử rằng chúng tôi muốn kiểm tra chuỗi "67%" mà chúng tôi có thể sử dụng;
LIKE '67#%%' ESCAPE '#';
Nếu chúng tôi muốn tìm kiếm bộ phim "67% Guilty", chúng tôi có thể sử dụng kịch bản hiển thị bên dưới để làm điều đó.
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
Lưu ý gấp đôi " %% " trong mệnh đề THÍCH, cái đầu tiên màu đỏ " % " được coi là một phần của chuỗi cần tìm kiếm. Một cái khác được sử dụng để khớp với bất kỳ số lượng ký tự tiếp theo.
Truy vấn tương tự cũng sẽ hoạt động nếu chúng ta sử dụng một cái gì đó như
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
Tóm lược
- Like & Wildcards các công cụ mạnh mẽ giúp tìm kiếm dữ liệu khớp với các mẫu phức tạp.
- Có một số ký tự đại diện bao gồm tỷ lệ phần trăm, dấu gạch dưới và danh sách từ thiện (không được hỗ trợ bởi MySQL) trong số những người khác
- Ký tự đại diện phần trăm được sử dụng để khớp với bất kỳ số lượng ký tự nào bắt đầu từ 0 (0) trở lên.
- Ký tự đại diện gạch dưới được sử dụng để khớp chính xác một ký tự.
إرسال تعليق