नीचे उन पंक्तियों को वापस करने की दो विधियाँ हैं जिनमें 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
यह उन यूनिकोड वर्णों को आउटपुट से बाहर नहीं करता है यदि वे अल्फ़ान्यूमेरिक वर्णों के साथ एक पंक्ति साझा करते हैं।