LIKE, वाइल्डकार्ड और एस्केपिंग
पैटर्न मिलान, प्रतिशत बनाम अंडरस्कोर और शाब्दिक वाइल्डकार्ड वर्णों को एस्केप करना सीखें
LIKE, वाइल्डकार्ड और एस्केपिंग, CoddyKit पर कोडिंग साक्षात्कार की तैयारी का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह कोडिंग साक्षात्कार की तैयारी सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। कोडिंग साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
साक्षात्कार में पैटर्न मिलान की कड़ी जाँच
LIKE सरल दिखता है, लेकिन इसमें साक्षात्कार की तीन आम चूकें छिपी होती हैं: दो वाइल्डकार्डों को लेकर भ्रम, डेटा में मौजूद शाब्दिक प्रतिशत चिह्न या अंडरस्कोर को एस्केप करना भूल जाना, और डेटाबेस के अनुसार बदलने वाली केस-संवेदनशीलता।
इस पाठ में दो वाइल्डकार्ड, ESCAPE खंड और अलग-अलग डेटाबेस-प्रणालियों के नियमों का गहराई से अभ्यास कराया गया है, जिनके बारे में साक्षात्कारकर्ता शुरुआती लोगों और वास्तविक खोज-सुविधाएँ लागू कर चुके लोगों के बीच अंतर जानने के लिए पूछते हैं।
दो वाइल्डकार्ड
LIKE में ठीक दो वाइल्डकार्ड वर्ण होते हैं:
%शून्य या अधिक वर्णों से मेल खाता है_ठीक एक वर्ण से मेल खाता है
इसलिए 'a%' a से शुरू होने वाली किसी भी चीज़ से मेल खाता है, जबकि 'a_' a से शुरू होने वाली दो-वर्णों की शृंखला से मेल खाता है। इन दोनों को मिला देना LIKE की सबसे आम गलती है।
SELECT *
FROM customers
WHERE name LIKE 'A%';
-- every name beginning with Aकहीं भी प्रतिशत चिह्न
मिलान किस स्थान पर टिकेगा, इसे नियंत्रित करने के लिए % को सही जगह रखें:
'%son'son पर समाप्त होता है (जॉनसन, मेसन)'%mary%'में mary कहीं भी मौजूद हो सकता है'J%n'J से शुरू होता है और n पर समाप्त होता है
अकेला '%' हर गैर-NULL पंक्ति से मेल खाता है। NULL किसी भी LIKE पैटर्न से मेल नहीं खाते, यहाँ तक कि '%' से भी नहीं।
SELECT *
FROM customers
WHERE email LIKE '%@gmail.com';निश्चित लंबाई के लिए अंडरस्कोर
_ किसी एक मनमाने वर्ण से मेल खाता है, इसलिए यह निश्चित-चौड़ाई वाले कोडों के लिए उपयोगी है। 'A__' ठीक तीन वर्णों से मेल खाता है जो A से शुरू होते हैं—न उससे अधिक, न उससे कम।
साक्षात्कारकर्ता उत्पाद कोड या देश कोड देकर इसकी जाँच करते हैं। जब तीन-वर्णों का A से शुरू होने वाला कोड माँगा जाए और उम्मीदवार 'A%' लिख दे, तो उत्तर सूक्ष्म रूप से गलत होता है, क्योंकि उससे A से शुरू होने वाली कोई भी चीज़ लौट सकती है।
SELECT *
FROM products
WHERE sku LIKE 'A__';
-- A followed by exactly two more charactersडेटा में % और _ दिखाई देने पर
यदि आपको ऐसे मान खोजने हों जिनमें सचमुच प्रतिशत चिह्न हो, जैसे छूट का लेबल '50% की छूट', तो क्या होगा? LIKE '%50%%' लिखना काम नहीं करेगा, क्योंकि अंतिम % को शाब्दिक चिह्न के बजाय वाइल्डकार्ड माना जाएगा।
आपको एसक्यूएल को बताना होगा कि एक विशेष वर्ण शाब्दिक है। इसी काम के लिए ESCAPE खंड होता है।
ESCAPE खंड
ESCAPE के साथ एक एस्केप वर्ण घोषित कीजिए, फिर जिस वाइल्डकार्ड को शाब्दिक रूप से लेना हो उसके आगे वह वर्ण लगाइए। यहाँ ! एस्केप वर्ण है, इसलिए !% का अर्थ शाब्दिक प्रतिशत चिह्न है।
इससे ऐसे मान मिलते हैं जिनमें 50% का शाब्दिक पाठ कहीं भी मौजूद हो। एस्केप वर्ण मनमाना हो सकता है; ऐसा वर्ण चुनिए जो आपके खोज-पाठ में मौजूद न हो।
SELECT *
FROM promos
WHERE label LIKE '%50!%%' ESCAPE '!';
-- matches a literal '50%' anywhere in labelशाब्दिक अंडरस्कोर को एस्केप करना
उपयोगकर्ता नामों और पहचानकर्ताओं में अंडरस्कोर छिपे होते हैं, और एस्केप न किया गया _ चुपचाप किसी भी वर्ण से मेल खाता है। ऐसे ईमेल खोजने के लिए जो सचमुच 'a_b' से शुरू होते हों, आपको अंडरस्कोर को एस्केप करना होगा।
एस्केप के बिना 'a_b%' 'axb', 'a9b' आदि से भी मेल खाएगा। यह बग लगातार उत्पादन में पहुँच जाता है, क्योंकि एस्केप न की गई क्वेरी फिर भी देखने में विश्वसनीय पंक्तियाँ लौटाती है।
SELECT *
FROM users
WHERE handle LIKE 'a!_b%' ESCAPE '!';
-- handle starting with the literal text a_bकेस-संवेदनशीलता डेटाबेस के अनुसार बदलती है
LIKE केस-संवेदनशील है या नहीं, यह इंजन और कोलेशन पर निर्भर करता है:
- PostgreSQL:
LIKEकेस-संवेदनशील है; केस-असंवेदनशील मिलान के लिएILIKEका उपयोग कीजिए - MySQL: यह कॉलम के कोलेशन पर निर्भर करता है और अक्सर डिफ़ॉल्ट रूप से केस-असंवेदनशील होता है
- एसक्यूएल सर्वर: यह कोलेशन सेटिंग पर निर्भर करता है
हर जगह काम करने वाला स्पष्ट तरीका है कि दोनों पक्षों को छोटे अक्षरों में बदल दिया जाए।
SELECT *
FROM customers
WHERE LOWER(name) LIKE 'a%';छिपी हुई प्रदर्शन-लागत
'%son' जैसा शुरुआती वाइल्डकार्ड सामान्य बी-ट्री अनुक्रमणिका का उपयोग नहीं कर सकता, क्योंकि अनुक्रमणिका उपसर्ग के क्रम में व्यवस्थित होती है और आपने शुरुआत को निश्चित नहीं किया है। इंजन को हर पंक्ति स्कैन करनी पड़ती है।
'son%' (अंतिम वाइल्डकार्ड और निश्चित उपसर्ग) अनुक्रमणिका का उपयोग कर सकता है। साक्षात्कारकर्ता अक्सर पूछते हैं कि LIKE खोज धीमी क्यों है; आम तौर पर उत्तर शुरुआती % होता है।
-- index-friendly (anchored prefix):
WHERE name LIKE 'Smi%'
-- forces a scan (leading wildcard):
WHERE name LIKE '%mith'LIKE से आगे
जब LIKE पर्याप्त न हो, तो अपनी समझ की गहराई दिखाने के लिए विकल्पों का उल्लेख कीजिए:
- वास्तविक नियमित व्यंजकों के लिए PostgreSQL में
SIMILAR TOऔर POSIX रेगुलर एक्सप्रेशन (~,~*) - बड़े मुक्त-पाठ संग्रहों के लिए पूर्ण-पाठ खोज अनुक्रमिकाएँ
- शुरुआती-वाइल्डकार्ड वाली खोजों को तेज़ बनाने के लिए ट्राइग्राम अनुक्रमिकाएँ (पीजी_ट्रिग्राम)
इनका उल्लेख करने से पता चलता है कि आप जानते हैं कि पाठ-खोज में LIKE शुरुआती स्तर है, अंतिम सीमा नहीं।
उपयोगकर्ता-प्रविष्टि से LIKE पैटर्न सुरक्षित रूप से बनाना
साक्षात्कारकर्ता अक्सर पूछते हैं: उपयोगकर्ता द्वारा लिखे गए पद को LIKE से बिना समस्या के कैसे खोजेंगे? दो जोखिमों का उल्लेख करें:
- इंजेक्शन — मान को एक प्राचल के रूप में बाँधें; कच्ची प्रविष्टि को SQL पाठ में कभी न जोड़ें।
- अनएस्केप किए गए वाइल्डकार्ड — यदि प्रविष्टि में स्वयं
%या_मौजूद हों, तो उन्हें एस्केप करें, ताकि वे शाब्दिक रूप से मिलें।
प्राचल को बाँधने के बाद प्रश्न में अपने वाइल्डकार्ड जोड़ें।
-- $1 is bound as a parameter; wildcards are added in SQL
SELECT *
FROM products
WHERE name LIKE '%' || replace(replace($1, '_', '\_'), '%', '\%') || '%' ESCAPE '\';त्वरित जाँच
दोनों वाइल्डकार्डों के बीच का अंतर याद कीजिए।
पुनरावलोकन
मुख्य बातें:
%शून्य या अधिक वर्णों से मेल खाता है;_ठीक एक वर्ण से मेल खाता है- डेटा में मौजूद शाब्दिक
%या_से मिलान करने के लिए एकESCAPEवर्ण घोषित कीजिए और वाइल्डकार्ड के आगे उसे लगाइए - केस-संवेदनशीलता इंजन के अनुसार बदलती है; दोनों पक्षों पर
LOWER()लगाना हर जगह काम करने वाला समाधान है (पोस्टग्रेज़ मेंILIKEहै) - शुरुआती वाइल्डकार्ड के कारण पूरा स्कैन करना पड़ता है; निश्चित उपसर्ग अनुक्रमणिका का उपयोग कर सकता है
एस्केप न किया गया _ एक चुपचाप होने वाली गलती है: यह फिर भी देखने में विश्वसनीय पंक्तियाँ लौटाता है।
एआई शिक्षक के साथ कोडिंग साक्षात्कार की तैयारी सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 90
- पाठ
- 360
अक्सर पूछे जाने वाले प्रश्न
क्या “LIKE, वाइल्डकार्ड और एस्केपिंग” पाठ निःशुल्क है?
हाँ—“LIKE, वाइल्डकार्ड और एस्केपिंग” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और कोडिंग साक्षात्कार की तैयारी पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। कोडिंग साक्षात्कार की तैयारी पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“LIKE, वाइल्डकार्ड और एस्केपिंग” में मैं क्या सीखूँगा?
पैटर्न मिलान, प्रतिशत बनाम अंडरस्कोर और शाब्दिक वाइल्डकार्ड वर्णों को एस्केप करना सीखें आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ कोडिंग साक्षात्कार की तैयारी का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या कोडिंग साक्षात्कार की तैयारी शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर कोडिंग साक्षात्कार की तैयारी शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“LIKE, वाइल्डकार्ड और एस्केपिंग” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस कोडिंग साक्षात्कार की तैयारी पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर कोडिंग साक्षात्कार की तैयारी पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- AND/OR प्राथमिकता और कोष्ठकीकरण
- BETWEEN, IN और समावेशी सीमाएँ
- LIKE, वाइल्डकार्ड और एस्केपिंग
- परिकलित मानों पर फ़िल्टर लगाना