SQLite में लोअरकेस वर्णों वाली पंक्तियों को वापस करने के लिए यहां तीन विकल्प दिए गए हैं।
नमूना डेटा
मान लीजिए हमारे पास निम्न डेटा वाली एक तालिका है:
.nullvalue null
SELECT c1 FROM t1;
परिणाम:
c1 -------------- CAFÉ Café café 1café eCafé James Bond 007 JB 007 007 null É É 123 é é 123 ø Ø
लोअरकेस अक्षरों वाली पंक्तियों को वापस करने के लिए हम निम्न विधियों का उपयोग कर सकते हैं।
विकल्प 1:UPPER()
से तुलना करें स्ट्रिंग
हम UPPER()
. का उपयोग कर सकते हैं मूल मान की तुलना इसके अपरकेस समकक्ष से करने के लिए कार्य करता है:
SELECT c1 FROM t1
WHERE UPPER(c1) <> c1;
परिणाम:
c1 -------------- Café café 1café eCafé James Bond 007
के बराबर नहीं का उपयोग करके (<>
) ऑपरेटर (आप वैकल्पिक रूप से !=
. का उपयोग कर सकते हैं के बजाय <>
यदि आप चाहें), तो हम केवल उन्हीं पंक्तियों को लौटाते हैं जो उनके अपरकेस समकक्षों से भिन्न होती हैं। हम ऐसा इसलिए करते हैं क्योंकि, यदि कोई मान इसके अपरकेस समकक्ष के समान है, तो यह पहले से ही अपरकेस था (और हम इसे वापस नहीं करना चाहते हैं)।
SQLite केस-संवेदी खोज करता है, और इसलिए हमें वांछित परिणाम प्राप्त करने के लिए कुछ और करने की आवश्यकता नहीं है।
आपने देखा होगा कि उपरोक्त उदाहरण ने लोअरकेस यूनिकोड वर्णों को वापस नहीं किया é
और ø
जब तक मान में एक गैर-यूनिकोड लोअरकेस अक्षर भी शामिल न हो। SQLite पूरी तरह से यूनिकोड वर्णों का समर्थन नहीं करता है। उदाहरण के लिए, UPPER()
और LOWER()
फ़ंक्शन केवल अंग्रेज़ी भाषा में प्रयुक्त 26 अक्षरों के लिए केस मैपिंग प्रदान करते हैं। इसलिए, उपरोक्त उदाहरण ने किसी भी यूनिकोड वर्ण को उनके अपरकेस समकक्ष में परिवर्तित नहीं किया।
यदि आपको यूनिकोड वर्णों के साथ काम करने की आवश्यकता है तो SQLite ICU एक्सटेंशन पर एक नज़र डालें।
विकल्प 2:वास्तविक वर्णों से तुलना करें
एक अन्य विकल्प REGEXP
. का उपयोग करना है एक नियमित अभिव्यक्ति पैटर्न वाला ऑपरेटर जिसमें स्पष्ट रूप से प्रत्येक लोअरकेस वर्ण शामिल होता है जिसे हम मिलान करना चाहते हैं:
SELECT c1 FROM t1
WHERE c1 REGEXP '[abcdefghijklmnopqrstuvwxyz]';
परिणाम:
c1 -------------- Café café 1café eCafé James Bond 007
हम चाहें तो अपनी सूची में यूनिकोड वर्ण शामिल कर सकते हैं:
SELECT c1 FROM t1
WHERE c1 REGEXP '[éøabcdefghijklmnopqrstuvwxyz]';
परिणाम:
c1 -------------- Café café 1café eCafé James Bond 007 é é 123 ø
विकल्प 3:वर्णों की श्रेणी से तुलना करें
ऐसा करने का एक और तरीका है कि हम उन लोअरकेस वर्णों की श्रेणी निर्दिष्ट करें जिनका हम मिलान करना चाहते हैं:
SELECT c1 FROM t1
WHERE c1 REGEXP '[a-z]';
परिणाम:
c1 -------------- Café café 1café eCafé James Bond 007