SQLite में, आप LIKE
. का उपयोग कर सकते हैं पैटर्न मिलान तुलना करने के लिए आपके प्रश्नों में ऑपरेटर।
उदाहरण के लिए, आप इसे अपने WHERE
. में जोड़ सकते हैं क्लॉज केवल उन पंक्तियों को वापस करने के लिए है जो किसी दिए गए पैटर्न से मेल खाते हैं।
हालांकि, इसे WHERE
. में जोड़ना क्लॉज ही एकमात्र तरीका नहीं है जिससे आप LIKE
. का उपयोग कर सकते हैं ऑपरेटर। आप इसका उपयोग बूलियन मान वापस करने के लिए भी कर सकते हैं।
मूल उदाहरण
यहां एक बुनियादी उदाहरण दिया गया है जो LIKE
. का उपयोग करता है एक WHERE
. में ऑपरेटर खंड।
SELECT * FROM Artist
WHERE Name LIKE 'Black%';
परिणाम:
ArtistId Name ---------- ------------------- 11 Black Label Society 12 Black Sabbath 169 Black Eyed Peas
इस मामले में मैं उन सभी कलाकारों को लौटाना चाहता था जिनका नाम ब्लैक . से शुरू होता है .
प्रतिशत चिह्न एक वाइल्डकार्ड वर्ण है जो किसी भी वर्ण (रिक्त स्थान सहित) के शून्य या अधिक से मेल खाता है।
वाइल्डकार्ड के बिना
अगर मैंने वाइल्डकार्ड चरित्र का उपयोग नहीं किया होता, तो मुझे कोई परिणाम नहीं मिलता।
मेरे कहने का एक उदाहरण यहां दिया गया है:
SELECT * FROM Artist
WHERE Name LIKE 'Black';
परिणाम:
(यह जानबूझकर खाली है, क्योंकि कोई परिणाम नहीं थे।)
एकाधिक वाइल्डकार्ड
यदि आवश्यक हो तो आप एक से अधिक वाइल्डकार्ड वर्णों का उपयोग कर सकते हैं। इस उदाहरण में मैं अपने पैटर्न के सामने एक और जोड़ देता हूं।
SELECT * FROM Artist
WHERE Name LIKE '%Black%';
परिणाम:
ArtistId Name ---------- ------------------- 11 Black Label Society 12 Black Sabbath 38 Banda Black Rio 137 The Black Crowes 169 Black Eyed Peas
इसके परिणामस्वरूप और पंक्तियाँ वापस आ जाती हैं, क्योंकि दो पंक्तियाँ हैं जिनमें काली . है उनके नाम पर, लेकिन शुरुआत में नहीं।
अंडरस्कोर (_) वाइल्डकार्ड
आपके पास अंडरस्कोर का उपयोग करने का विकल्प भी है (_
) वाइल्डकार्ड।
यह वाइल्डकार्ड वर्ण ठीक एक वर्ण (किसी भी वर्ण) से मेल खाता है।
बिल्लियों called नामक निम्न तालिका पर विचार करें :
CatId CatName ---------- ---------- 1 Brush 2 Brash 3 Broosh 4 100%Fluff 5 100$Fluff
हां, उनमें से कुछ बिल्लियों के अजीब नाम हैं, लेकिन वे काम आएंगी।
उस तालिका के विरुद्ध क्वेरी में अंडरस्कोर वाइल्डकार्ड का उपयोग करने का एक उदाहरण यहां दिया गया है।
SELECT * FROM Cats
WHERE CatName LIKE 'Br_sh';
परिणाम:
CatId CatName ---------- ---------- 1 Brush 2 Brash
ध्यान दें कि ब्रूश . नाम की बिल्ली शामिल नहीं है।
ब्रूश को शामिल करने के लिए , मुझे दो अंडरस्कोर का उपयोग करना होगा:
SELECT * FROM Cats
WHERE CatName LIKE 'Br__sh';
परिणाम:
CatId CatName ---------- ---------- 3 Broosh
हालांकि, इसमें अन्य दो बिल्लियों को शामिल नहीं किया गया है।
मैं अन्य बिल्लियों को शामिल करने के लिए हमेशा प्रतिशत चिह्न का उपयोग कर सकता था।
SELECT * FROM Cats
WHERE CatName LIKE 'Br%sh';
परिणाम:
CatId CatName ---------- ---------- 1 Brush 2 Brash 3 Broosh
हालांकि, ध्यान रखें कि यह Br . के बीच दो से अधिक वर्णों वाले नाम भी लौटाएगा और श ।
एस्केप क्लॉज
कभी-कभी आपके डेटा में वास्तव में वाइल्डकार्ड वर्ण शामिल हो सकते हैं। दूसरे शब्दों में, डेटा में अंडरस्कोर या प्रतिशत चिह्न होते हैं।
यह एक समस्या हो सकती है यदि आप वास्तव में अंडरस्कोर या प्रतिशत चिह्न को शाब्दिक वर्ण के रूप में मिलान करने का प्रयास कर रहे हैं, न कि वाइल्डकार्ड के रूप में।
मेरी बिल्लियों की तालिका में, आप देखेंगे कि एक बिल्ली के नाम पर प्रतिशत चिह्न है। एक अन्य बिल्ली का नाम लगभग एक जैसा ही है, सिवाय इसके कि, प्रतिशत चिह्न के बजाय, यह एक डॉलर का चिह्न है।
यहाँ फिर से तालिका है:
CatId CatName ---------- ---------- 1 Brush 2 Brash 3 Broosh 4 100%Fluff 5 100$Fluff
अगर मैं केवल उन बिल्लियों को वापस करना चाहता हूं जिनके नाम 100%F . से शुरू होते हैं तो मुझे % . से बचना होगा . अगर मैं इससे नहीं बचा, तो मुझे अवांछित परिणाम मिलेंगे।
अगर मैं कोई क्वेरी बिना चलाता हूं, तो यहां बताया गया है प्रतिशत चिह्न से बचना।
SELECT * FROM Cats
WHERE CatName LIKE '100%F';
परिणाम:
CatId CatName ---------- ---------- 4 100%Fluff 5 100$Fluff
इस मामले में प्रतिशत चिह्न भी डॉलर चिह्न से मेल खाता है, क्योंकि प्रतिशत चिह्न को वाइल्डकार्ड वर्ण के रूप में माना जा रहा था।
यह सुनिश्चित करने के लिए कि प्रतिशत चिह्न को वाइल्डकार्ड वर्ण के रूप में नहीं माना जाता है, हम ESCAPE
का उपयोग कर सकते हैं खंड।
SELECT * FROM Cats
WHERE CatName LIKE '100\%%F' ESCAPE '\';
परिणाम:
CatId CatName ---------- ---------- 4 100%Fluff
बूलियन मान लौटाएं
आप LIKE
. का उपयोग कर सकते हैं एक 0 . वापस करने के लिए ऑपरेटर या 1 , इस पर निर्भर करता है कि कोई मैच है या नहीं।
यहां एक उदाहरण दिया गया है।
SELECT
CatName,
CatName LIKE 'Br%'
FROM Cats;
परिणाम:
CatName CatName LIKE 'Br%' ---------- ------------------ Brush 1 Brash 1 Broosh 1 100%Fluff 0 100$Fluff 0
इस मामले में, पहली तीन पंक्तियाँ मापदंड से मेल खाती हैं, और अंतिम दो पंक्तियाँ नहीं।
केस-सेंसिटिविटी
डिफ़ॉल्ट रूप से, SQLite LIKE
एएससीआईआई वर्णों के लिए ऑपरेटर केस-असंवेदनशील है। इसका मतलब है कि यह अपरकेस और लोअरकेस वर्णों से मेल खाएगा, भले ही आप अपने पैटर्न में किसी भी मामले का उपयोग करें।
आप केस_सेंसिटिव_लाइक . का उपयोग कर सकते हैं PRAGMA कथन ASCII श्रेणी में केस-संवेदी मिलान करने के लिए।
उदाहरण के लिए देखें कि SQLite के LIKE ऑपरेटर को केस-सेंसिटिव कैसे बनाया जाए।
द लाइक () फंक्शन
ऐसा करने का एक वैकल्पिक तरीका like()
. का उपयोग करना है समारोह।
यह फ़ंक्शन ठीक वही काम करता है जो LIKE
. करता है ऑपरेटर, सिवाय इसके कि आपको थोड़ा अलग सिंटैक्स का उपयोग करने की आवश्यकता है।
उपरोक्त सभी उदाहरणों को like()
. का उपयोग करने के लिए फिर से लिखा जा सकता है यदि आवश्यक हो तो कार्य करें।