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() . का उपयोग कर सकते हैं मान की तुलना रेगुलर एक्सप्रेशन से करने के लिए फ़ंक्शन।

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

SELECT c1 FROM t1 
WHERE REGEXP_LIKE(c1, '^[[:alnum:]]+$');

परिणाम:

Music
Café
007
é
É
ø

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

ध्यान दें कि स्पेस कैरेक्टर को गैर-अल्फ़ान्यूमेरिक माना जाता है, और इसलिए यदि हम रिक्त स्थान शामिल करना चाहते हैं, तो हम यह कर सकते हैं:

SELECT c1 FROM t1 
WHERE REGEXP_LIKE(c1, '^[[:alnum:] ]+$');

परिणाम:

Music
Live Music
Café
Café Del Mar
100 Cafés
Player 456
007
é
É
é 123
ø
ø 123

उन सभी पंक्तियों को वापस करने के लिए जिनमें शामिल हैं अल्फ़ान्यूमेरिक वर्ण (भले ही पंक्ति में गैर-अल्फ़ान्यूमेरिक वर्ण भी हों), हम यह कर सकते हैं:

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

परिणाम:

Music
Live Music
Café
Café Del Mar
100 Cafés
[email protected]
1 + 1
$1.50
Player 456
007
é
É
é 123
ø
ø 123

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

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

उदाहरण:

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

परिणाम:

Music
007

आप देखेंगे कि यह हमारे पहले उदाहरण की तुलना में कम पंक्तियाँ लौटाता है। ऐसा इसलिए है क्योंकि मैंने é . को शामिल नहीं किया था , É , या ø मेरी सीमा में वर्ण, और इसलिए उन वर्णों वाली किसी भी पंक्ति को आउटपुट से बाहर रखा गया है।

इसलिए, यदि आप गलती से उन वर्णों को बाहर कर देते हैं जिन्हें आपको शामिल करना चाहिए, तो इस पद्धति का उपयोग करते समय आपको सावधान रहने की आवश्यकता होगी।

यहाँ यह फिर से एक श्रेणी के साथ है जिसमें वे वर्ण शामिल हैं:

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

परिणाम:

Music
Café
007
é
É
ø

हम इस तरह के रिक्त स्थान शामिल कर सकते हैं:

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

परिणाम:

Music
Live Music
Café
Café Del Mar
100 Cafés
Player 456
007
é
É
é 123
ø
ø 123

और हम निम्नलिखित का उपयोग उन सभी पंक्तियों को शामिल करने के लिए कर सकते हैं जिनमें शामिल हैं हमारी श्रेणी के वर्ण (भले ही उनमें इस श्रेणी के बाहर के वर्ण भी हों):

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

परिणाम:

Music
Live Music
Café
Café Del Mar
100 Cafés
[email protected]
1 + 1
$1.50
Player 456
007
é
É
é 123
ø
ø 123

या अगर हम उन यूनिकोड वर्णों को शामिल नहीं करना चाहते हैं, तो हम इसे सरल बना सकते हैं:

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

परिणाम:

Music
Live Music
Café
Café Del Mar
100 Cafés
[email protected]
1 + 1
$1.50
Player 456
007
é 123
ø 123

यह उन यूनिकोड वर्णों को आउटपुट से बाहर नहीं करता है यदि वे अल्फ़ान्यूमेरिक वर्णों के साथ एक पंक्ति साझा करते हैं।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. GI 19c RPM पैकेज मैनेजर डेटाबेस

  2. OracleException (0x80004005) Oracle डेटाबेस से कनेक्ट करते समय

  3. एकाधिक डेटाबेस के अनुरूप ऑनलाइन SQL सिंटैक्स चेकर

  4. कास्ट बनाम एसएसआईएस डेटा प्रवाह निहित रूपांतरण अंतर

  5. Oracle में परिणाम कैसे सीमित करें