नीचे उन पंक्तियों को वापस करने की दो विधियाँ हैं जिनमें 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]#&()–[{}]:;',?/* `~$^+=<>“