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