MySQL वाइल्डकार्ड्स क्या हैं?
MySQL वाइल्डकार्ड ऐसे अक्षर हैं जो खोज डेटा को जटिल मानदंडों से मेल खाने में मदद करते हैं। वाइल्डकार्ड का उपयोग LIKE तुलना ऑपरेटर के साथ या NOT LIKE तुलना ऑपरेटर के साथ किया जाता है।
WildCards का उपयोग क्यों करें?
यदि आप SQL का उपयोग करने से परिचित हैं, तो आप सोच सकते हैं कि आप SELECT और WHERE क्लॉज का उपयोग करके किसी भी जटिल डेटा की खोज कर सकते हैं। तो फिर वाइल्डकार्ड का उपयोग क्यों करें?
इससे पहले कि हम उस प्रश्न का उत्तर दें, एक उदाहरण देखें। मान लीजिए कि Myflix वीडियो लाइब्रेरी के विपणन विभाग ने टेक्सास शहर में विपणन प्रचार किया और सदस्यों की संख्या पर कुछ प्रतिक्रिया प्राप्त करना चाहते हैं
टेक्सास से पंजीकृत, आप वांछित जानकारी प्राप्त करने के लिए WHERE क्लॉज के साथ निम्नलिखित चयन कथन का उपयोग कर सकते हैं।
SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';
जैसा कि आप उपरोक्त क्वेरी से देख सकते हैं, "WHERE क्लॉज" जटिल हो गया है। हालांकि वाइल्डकार्ड का उपयोग करना क्वेरी को सरल करता है क्योंकि हम नीचे दी गई स्क्रिप्ट की तरह कुछ सरल का उपयोग कर सकते हैं।
SELECT * FROM members WHERE postal_address like '% TX';
संक्षेप में, वाइल्डकार्ड हमें अपने डेटा संचालित अनुप्रयोगों में बिजली खोज इंजन विकसित करने की अनुमति देते हैं।
वाइल्डकार्ड के प्रकार
% प्रतिशत
शून्य (0) या अधिक वर्णों के प्रतिमान को निर्दिष्ट करने के लिए% प्रतिशत वर्ण का उपयोग किया जाता है । इसमें निम्नलिखित मूल वाक्यविन्यास हैं।
SELECT statements… WHERE fieldname LIKE 'xxx%';
यहां
- "Select statement ..." मानक SQL SELECT कमांड है।
- "WHERE" फ़िल्टर को लागू करने के लिए प्रयोग किया जाने वाला प्रमुख शब्द है।
- "LIKE" तुलना ऑपरेटर है जो वाइल्डकार्ड के साथ संयोजन में उपयोग किया जाता है
- 'xxx' किसी भी निर्दिष्ट शुरुआती पैटर्न जैसे एकल वर्ण या अधिक और "%" शून्य (0) से शुरू होने वाले किसी भी वर्ण से मेल खाता है।
उपरोक्त कथन की पूरी तरह से सराहना करने के लिए, आइए एक व्यावहारिक उदाहरण देखें
मान लीजिए कि हम सभी फिल्मों को "कोड" शब्द के शीर्षक के हिस्से के रूप में प्राप्त करना चाहते हैं, हम शब्द "कोड" के दोनों किनारों पर एक पैटर्न मैच करने के लिए प्रतिशत वाइल्डकार्ड का उपयोग करेंगे। नीचे SQL कथन है जिसका उपयोग वांछित परिणाम प्राप्त करने के लिए किया जा सकता है।
SELECT * FROM movies WHERE title LIKE '%code%';
MySQL कार्यक्षेत्र में उपरोक्त स्क्रिप्ट को Myflixdb के खिलाफ निष्पादित करने से हमें नीचे दिखाए गए परिणाम मिलते हैं।
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
7 | Davinci Code | NULL | NULL | 6 |
ध्यान दें कि भले ही खोज कुंजी शब्द "कोड" शीर्षक की शुरुआत या अंत में दिखाई देता है, यह अभी भी हमारे परिणाम सेट में वापस आ गया है। ऐसा इसलिए है क्योंकि हमारे कोड में शुरुआत में वर्णों की संख्या शामिल होती है और फिर अंत में किसी भी संख्या में वर्ण के बाद "कोड" से मेल खाता है।
अब केवल खोज मापदंड की शुरुआत में प्रतिशत वाइल्डकार्ड शामिल करने के लिए हमारी उपरोक्त स्क्रिप्ट को संशोधित करें।
SELECT * FROM movies WHERE title LIKE '%code';
MySQL कार्यक्षेत्र में उपरोक्त स्क्रिप्ट को Myflixdb के खिलाफ निष्पादित करने से हमें नीचे दिखाए गए परिणाम मिलते हैं।
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
7 | Davinci Code | NULL | NULL | 6 |
ध्यान दें कि डेटाबेस से केवल एक रिकॉर्ड लौटाया गया है। ऐसा इसलिए है क्योंकि हमारा कोड मूवी शीर्षक की शुरुआत में किसी भी वर्ण से मेल खाता है और केवल "रिकॉर्ड" पैटर्न के साथ समाप्त होने वाले रिकॉर्ड प्राप्त करता है।
अब मिलान किए जाने वाले निर्दिष्ट पैटर्न के अंत में प्रतिशत वाइल्डकार्ड को स्थानांतरित करते हैं। संशोधित स्क्रिप्ट नीचे दी गई है।
SELECT * FROM movies WHERE title LIKE 'code%';MySQL कार्यक्षेत्र में उपरोक्त स्क्रिप्ट को Myflixdb के खिलाफ निष्पादित करने से हमें नीचे दिखाए गए परिणाम मिलते हैं।
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
4 | Code Name Black | Edgar Jimz | 2010 | NULL |
नोटिस केवल एक रिकॉर्ड डेटाबेस से वापस किया गया है। ऐसा इसलिए है क्योंकि हमारा कोड सभी शीर्षक से मेल खाता है जो किसी भी संख्या के वर्णों के बाद "पैटर्न" से शुरू होता है।
_ अंडरस्कोर वाइल्डकार्ड
अंडरस्कोर वाइल्डकार्ड का उपयोग ठीक एक वर्ण से मेल खाने के लिए किया जाता है । मान लीजिए कि हम उन सभी फिल्मों की खोज करना चाहते हैं जो 200x वर्षों में रिलीज़ हुईं जहाँ x बिल्कुल एक ऐसा चरित्र है जिसका कोई भी मूल्य हो सकता है। हम इसे प्राप्त करने के लिए अंडरस्कोर वाइल्ड कार्ड का उपयोग करेंगे। नीचे दी गई स्क्रिप्ट उन सभी फिल्मों का चयन करती है जो वर्ष "200x" में रिलीज़ हुई थीं
SELECT * FROM movies WHERE year_released LIKE '200_';
MySQL कार्यक्षेत्र में उपरोक्त स्क्रिप्ट को Myflixdb के खिलाफ निष्पादित करने से हमें नीचे दिखाए गए परिणाम मिलते हैं।
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
2 | Forgetting Sarah Marshal | Nicholas Stoller | 2008 | 2 |
9 | Honey mooners | Jhon Shultz | 2005 | 8 |
ध्यान दें कि हमारे द्वारा सेट किए गए क्षेत्र वर्ष में किसी भी चरित्र द्वारा केवल 200 फिल्मों का अनुसरण किया जाता है। इसका कारण यह है कि अंडरस्कोर वाइल्डकार्ड किसी एकल चरित्र के बाद पैटर्न 200 से मेल खाता है
उसके जैसा नहीं
NOT लॉजिकल ऑपरेटर का उपयोग वाइल्डकार्ड के साथ उन पंक्तियों को वापस करने के लिए किया जा सकता है जो निर्दिष्ट पैटर्न से मेल नहीं खाती हैं।
मान लीजिए कि हम ऐसी फिल्में प्राप्त करना चाहते हैं जो वर्ष 200x में रिलीज़ नहीं हुई थीं। हम अपने परिणाम प्राप्त करने के लिए अंडरस्कोर वाइल्डकार्ड के साथ नॉट लॉजिकल ऑपरेटर का उपयोग करेंगे। नीचे स्क्रिप्ट है जो ऐसा करती है।
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 |
केवल उन फिल्मों को देखें जो जारी किए गए वर्ष में 200 से शुरू नहीं होती हैं, हमारे परिणाम सेट में वापस आ गई हैं। ऐसा इसलिए है क्योंकि हमने अपने वाइल्डकार्ड पैटर्न खोज में NOT तार्किक ऑपरेटर का उपयोग किया है।
भागने का कीवर्ड।
ESCAPE कीवर्ड का उपयोग पैटर्न मिलान वर्णों से बचने के लिए किया जाता है जैसे (%) प्रतिशत और अंडरस्कोर (_) यदि वे डेटा का हिस्सा बनाते हैं।
मान लें कि हम स्ट्रिंग "67%" की जांच करना चाहते हैं जिसका हम उपयोग कर सकते हैं;
LIKE '67#%%' ESCAPE '#';
यदि हम फिल्म "67% दोषी" की खोज करना चाहते हैं, तो हम ऐसा करने के लिए नीचे दी गई स्क्रिप्ट का उपयोग कर सकते हैं।
SELECT * FROM movies WHERE title LIKE '67#%%' ESCAPE '#';
LIKE क्लॉज में दोहरे " %% " पर ध्यान दें , लाल " % " में पहले वाले को खोजे जाने वाले स्ट्रिंग के भाग के रूप में माना जाता है। दूसरे का उपयोग किसी भी वर्ण का मिलान करने के लिए किया जाता है।
यदि हम कुछ का उपयोग करते हैं तो वही क्वेरी भी काम करेगी
SELECT * FROM movies WHERE title LIKE '67=%%' ESCAPE '=';
सारांश
- जैसे और वाइल्डकार्ड शक्तिशाली टूल जो जटिल पैटर्न से डेटा मिलान में मदद करते हैं।
- ऐसे कई वाइल्डकार्ड हैं जिनमें प्रतिशत, अंडरस्कोर और चारलिस्ट (MySQL द्वारा समर्थित नहीं) शामिल हैं
- प्रतिशत वाइल्डकार्ड का उपयोग शून्य (0) और अधिक से शुरू होने वाले किसी भी वर्ण से मेल खाने के लिए किया जाता है।
- अंडरस्कोर वाइल्डकार्ड का उपयोग ठीक एक वर्ण से मेल खाने के लिए किया जाता है।