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