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

वापसी पंक्तियाँ जिनमें Oracle में संख्यात्मक मान होते हैं

निम्नलिखित उदाहरण केवल उन्हीं पंक्तियों को लौटाते हैं जिनमें 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

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ROWLOCK, UPDLOCK, READPAST क्वेरी संकेत के बराबर Oracle

  2. कैसे Oracle में नियमित अभिव्यक्ति से समूह निकालने के लिए?

  3. C# और ODP.NET से पैकेज में फ़ंक्शन को कॉल करने के लिए कोड

  4. ORA-24550:सिग्नल प्राप्त हुआ:[si_signo=6] त्रुटि

  5. उपयोगकर्ता सुरक्षा के लिए Oracle में प्रोफाइल बनाना