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

Oracle में केवल गैर-अल्फ़ान्यूमेरिक वर्ण वाली पंक्तियों को वापस करने के 2 तरीके

नीचे उन पंक्तियों को वापस करने की दो विधियाँ हैं जिनमें Oracle डेटाबेस में केवल गैर-अल्फ़ान्यूमेरिक वर्ण हैं।

अक्षरांकीय वर्ण, वर्णानुक्रमिक वर्ण और संख्यात्मक वर्ण होते हैं।

नमूना डेटा

हम अपने उदाहरणों के लिए निम्नलिखित डेटा का उपयोग करेंगे:

CREATE TABLE t1 (
    c1 varchar(255) NULL
    );

INSERT INTO t1 (c1) 
    WITH c AS (
        SELECT 'Music' FROM DUAL UNION ALL
        SELECT 'Live Music' FROM DUAL UNION ALL
        SELECT 'Café' FROM DUAL UNION ALL
        SELECT 'Café Del Mar' FROM DUAL UNION ALL
        SELECT '100 Cafés' FROM DUAL UNION ALL
        SELECT '[email protected]' FROM DUAL UNION ALL
        SELECT '1 + 1' FROM DUAL UNION ALL
        SELECT '()' FROM DUAL UNION ALL
        SELECT '[email protected]#&()–[{}]:;'',?/*' FROM DUAL UNION ALL
        SELECT '`~$^+=<>“' FROM DUAL UNION ALL
        SELECT '$1.50' FROM DUAL UNION ALL
        SELECT 'Player 456' FROM DUAL UNION ALL
        SELECT '007' FROM DUAL UNION ALL
        SELECT 'é' FROM DUAL UNION ALL
        SELECT 'É' FROM DUAL UNION ALL
        SELECT 'é 123' FROM DUAL UNION ALL
        SELECT 'ø' FROM DUAL UNION ALL
        SELECT 'ø 123' FROM DUAL)
SELECT * FROM c;

SELECT c1 FROM t1;

परिणाम:

Music
Live Music
Café
Café Del Mar
100 Cafés
[email protected]
1 + 1
()
[email protected]#&()–[{}]:;',?/*
`~$^+=<>“
$1.50
Player 456
007
é
É
é 123
ø
ø 123

विकल्प 1:[:alnum:] से तुलना करें

हम Oracle के REGEXP_LIKE() . का उपयोग कर सकते हैं मान को रेगुलर एक्सप्रेशन से तुलना करने के लिए फ़ंक्शन करें, फिर इसे NOT . से नकारें ऑपरेटर।

Oracle की नियमित अभिव्यक्ति क्षमता में POSIX वर्ण वर्गों के लिए समर्थन शामिल है। इसलिए, हम [:alnum:] . का उपयोग कर सकते हैं गैर-अल्फ़ान्यूमेरिक वर्णों वाली पंक्तियों को खोजने के लिए हमारे नियमित अभिव्यक्तियों में POSIX वर्ण वर्ग।

SELECT c1 FROM t1 
WHERE NOT REGEXP_LIKE(c1, '[[:alnum:]]');

परिणाम:

()
[email protected]#&()–[{}]:;',?/*
`~$^+=<>“

यह केवल उन पंक्तियों को लौटाता है जिनमें केवल गैर-अल्फ़ान्यूमेरिक वर्ण होते हैं। यदि किसी पंक्ति में अल्फ़ान्यूमेरिक और गैर-अल्फ़ान्यूमेरिक दोनों वर्ण हैं, तो उसे वापस नहीं किया जाता है।

विकल्प 2:वर्णों की एक श्रेणी निर्दिष्ट करें

इसे करने का एक और तरीका है कि आप अपने रेगुलर एक्सप्रेशन में वर्णों की एक श्रेणी निर्दिष्ट करें।

उदाहरण:

SELECT c1 FROM t1 
WHERE NOT REGEXP_LIKE(c1, '[A-Za-z0-9]');

परिणाम:

()
[email protected]#&()–[{}]:;',?/*
`~$^+=<>“
é
É
ø

इस मामले में, मेरी बहिष्करण श्रेणी में é . जैसे अक्षरांकीय वर्ण शामिल नहीं थे , É , और ø , और इसलिए आउटपुट गैर-अल्फ़ान्यूमेरिक वर्णों का सही प्रतिनिधित्व नहीं है।

आउटपुट से उन वर्णों को बाहर करने के लिए सीमा का विस्तार करने का एक उदाहरण यहां दिया गया है:

SELECT c1 FROM t1 
WHERE NOT REGEXP_LIKE(c1, '[A-Za-zÀ-Þß-ÿ0-9]');

परिणाम:

()
[email protected]#&()–[{}]:;',?/*
`~$^+=<>“

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle DBA रीयल टाइम प्रश्न

  2. क्या स्पष्ट एएनएसआई जॉइन बनाम निहित जॉइन के उपयोग पर ओरेकल की आधिकारिक सिफारिश है?

  3. एकाधिक csv फ़ाइलों में तालिका निर्यात करने की प्रक्रिया

  4. Oracle में DBMS_OUTPUT पैकेज के बारे में जानें

  5. अपवाद होने पर डेटाबेस कनेक्शन को बंद करने के लिए सर्वश्रेष्ठ डिज़ाइन पैटर्न