MySQL वाइल्डकार्ड ट्यूटोरियल: पसंद, पसंद नहीं, एस्केप, ( % ), ( _ )
क्या हैं MySQL वाइल्डकार्ड?
MySQL वाइल्डकार्ड वे वर्ण हैं जो जटिल मानदंडों से मेल खाते डेटा को खोजने में मदद करते हैं। वाइल्डकार्ड का उपयोग LIKE तुलना ऑपरेटर या NOT LIKE तुलना ऑपरेटर के साथ किया जाता है।
वाइल्डकार्ड का उपयोग क्यों करें?
यदि आप SQL का उपयोग करने से परिचित हैं, तो आप सोच सकते हैं कि आप SELECT और WHERE क्लॉज़ का उपयोग करके किसी भी जटिल डेटा को खोज सकते हैं। तो फिर वाइल्डकार्ड का उपयोग क्यों करें?
इस सवाल का जवाब देने से पहले, आइए एक उदाहरण देखें। मान लीजिए कि मायफ्लिक्स वीडियो लाइब्रेरी के मार्केटिंग विभाग ने टेक्सास शहर में मार्केटिंग प्रमोशन किया और सदस्यों की संख्या पर कुछ प्रतिक्रिया प्राप्त करना चाहता है।
टेक्सास से पंजीकृत, आप वांछित जानकारी प्राप्त करने के लिए WHERE क्लॉज के साथ निम्नलिखित SELECT कथन का उपयोग कर सकते हैं।
SELECT * FROM members WHERE postal_address = 'Austin , TX' OR postal_address = Dallas , TX OR postal_address = Iola,TX OR postal_adress = Houston ,TX';
जैसा कि आप उपरोक्त प्रश्न से देख सकते हैं, “कहां कारण” जटिल हो जाता है। हालाँकि, वाइल्डकार्ड का उपयोग करने से क्वेरी सरल हो जाती है क्योंकि हम नीचे दिखाए गए स्क्रिप्ट की तरह कुछ सरल उपयोग कर सकते हैं।
SELECT * FROM members WHERE postal_address like '% TX';
संक्षेप में, वाइल्डकार्ड हमें अपने डेटा संचालित अनुप्रयोगों में शक्तिशाली खोज इंजन विकसित करने की अनुमति देते हैं।
वाइल्डकार्ड के प्रकार
% प्रतिशत
% प्रतिशत वर्ण का उपयोग पैटर्न निर्दिष्ट करने के लिए किया जाता है शून्य (0) या अधिक वर्णइसका मूल वाक्यविन्यास इस प्रकार है।
SELECT statements... WHERE fieldname LIKE 'xxx%';
यहाँ
- "चयन कथन…” मानक SQL SELECT कमांड है।
- फ़िल्टर लागू करने के लिए “कहां” मुख्य शब्द का उपयोग किया जाता है।
- "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 वर्कबेंच को मायफ्लिक्सडीबी के विरुद्ध चलाने से हमें नीचे दिखाए गए परिणाम मिलते हैं।
movie_id | title | director | year_released | category_id |
---|---|---|---|---|
7 | Davinci Code | NULL | NULL | 6 |
ध्यान दें कि डेटाबेस से केवल एक रिकॉर्ड लौटाया गया है। ऐसा इसलिए है क्योंकि हमारा कोड मूवी शीर्षक की शुरुआत में किसी भी संख्या में वर्णों से मेल खाता है और केवल वही रिकॉर्ड प्राप्त करता है जो पैटर्न “कोड” के साथ समाप्त होते हैं।
आइए अब प्रतिशत वाइल्डकार्ड को मिलान किए जाने वाले निर्दिष्ट पैटर्न के अंत में स्थानांतरित करें। संशोधित स्क्रिप्ट नीचे दिखाई गई है।
SELECT * FROM movies WHERE title LIKE 'code%';
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 वर्कबेंच को मायफ्लिक्सडीबी के विरुद्ध चलाने से हमें नीचे दिखाए गए परिणाम मिलते हैं।
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 में रिलीज़ नहीं हुई थीं। हम अपने परिणाम प्राप्त करने के लिए NOT लॉजिकल ऑपरेटर के साथ अंडरस्कोर वाइल्डकार्ड का उपयोग करेंगे। नीचे वह स्क्रिप्ट दी गई है जो ऐसा करती है।
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) से शुरू होने वाले किसी भी संख्या के वर्णों का मिलान करने के लिए किया जाता है।
- अंडरस्कोर वाइल्डकार्ड का उपयोग ठीक एक वर्ण से मिलान करने के लिए किया जाता है।