निम्नलिखित उदाहरण केवल उन्हीं पंक्तियों को लौटाते हैं जिनमें Oracle डेटाबेस में दिए गए कॉलम में संख्यात्मक मान होते हैं।
ये उदाहरण REGEXP_LIKE
. का उपयोग करते हैं निर्दिष्ट पैटर्न से मेल खाने वाले मानों को वापस करने के लिए कार्य करता है।
नमूना डेटा
आइए varchar2
के साथ एक नमूना तालिका बनाएं कॉलम और डेटा डालें:
CREATE TABLE t1 (
c1 varchar2(255)
);
INSERT ALL
INTO t1 (c1) VALUES ('0')
INTO t1 (c1) VALUES ('1')
INTO t1 (c1) VALUES ('+1')
INTO t1 (c1) VALUES ('-1')
INTO t1 (c1) VALUES ('00.00')
INTO t1 (c1) VALUES ('73.45')
INTO t1 (c1) VALUES ('+73.45')
INTO t1 (c1) VALUES ('-73.45')
INTO t1 (c1) VALUES ('.246')
INTO t1 (c1) VALUES ('-.34e7')
INTO t1 (c1) VALUES ('12.e-3')
INTO t1 (c1) VALUES ('1.2e+4')
INTO t1 (c1) VALUES ('a')
INTO t1 (c1) VALUES ('9afc')
INTO t1 (c1) VALUES ('e7')
INTO t1 (c1) VALUES ('+e0')
INTO t1 (c1) VALUES ('Ten')
INTO t1 (c1) VALUES ('5 Dollars')
SELECT 1 FROM DUAL;
आइए तालिका से सभी डेटा का चयन करें:
SELECT * FROM t1;
परिणाम:
0 1 +1 -1 00.00 73.45 +73.45 -73.45 .246 -.34e7 12.e-3 1.2e+4 a 9afc e7 +e0 Ten 5 Dollars
कॉलम एक varchar2
है कॉलम, इसलिए यह संख्यात्मक नहीं है। इसमें संख्याएँ हो सकती हैं (और करता है) लेकिन ये वर्ण डेटा के रूप में संग्रहीत हैं। इसमें मनमाना पाठ भी हो सकता है (जो यह करता है)।
सभी संख्यात्मक मान लौटाएं
उपरोक्त तालिका से सभी संख्यात्मक मान वापस करने के लिए हम निम्नलिखित क्वेरी का उपयोग कर सकते हैं:
SELECT c1
FROM t1
WHERE REGEXP_LIKE(c1, '^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$');
परिणाम:
0 1 +1 -1 00.00 73.45 +73.45 -73.45 .246 -.34e7 1.2e+4
रिटर्न इंटीजर
अगर हम केवल पूर्णांकों को वापस करना चाहते हैं, तो क्वेरी बहुत आसान हो सकती है:
SELECT c1
FROM t1
WHERE REGEXP_LIKE(c1, '^[0-9]+$');
परिणाम:
0 1
संख्यात्मक डेटा शामिल है
अगर हम उन पंक्तियों को खोजना चाहते हैं जिनमें शामिल हैं संख्यात्मक डेटा (भले ही उनमें गैर-संख्यात्मक डेटा भी हो), हम निम्न कार्य कर सकते हैं:
SELECT c1
FROM t1
WHERE REGEXP_LIKE(c1, '[0-9]+');
परिणाम:
0 1 +1 -1 00.00 73.45 +73.45 -73.45 .246 -.34e7 12.e-3 1.2e+4 9afc e7 +e0 5 Dollars
हम वैकल्पिक रूप से समान परिणाम प्राप्त करने के लिए POSIX कक्षाओं का उपयोग कर सकते हैं:
SELECT c1
FROM t1
WHERE REGEXP_LIKE(c1, '[[:digit:]]');
परिणाम:
0 1 +1 -1 00.00 73.45 +73.45 -73.45 .246 -.34e7 12.e-3 1.2e+4 9afc e7 +e0 5 Dollars