Oracle
 sql >> डेटाबेस >  >> RDS >> Oracle

Oracle में अपरकेस अक्षरों वाली पंक्तियों को खोजने के 4 तरीके

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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मैं जावा/जेडीबीसी का उपयोग करके ओरेकल डेटाबेस में 4000 वर्णों से अधिक लंबी स्ट्रिंग कैसे संग्रहीत करूं?

  2. जावा कोड के माध्यम से Oracle sql स्क्रिप्ट को कैसे निष्पादित करें

  3. SQLDeveloper कनेक्शन के तहत कोई टेबल प्रदर्शित नहीं करता है जहां यह टेबल कहता है

  4. एक्सएमएल से क्वेरी डेटा

  5. 19.3 PDB बंद ORA-65107 ORA-16078