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