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

मारियाडीबी में केवल संख्यात्मक मान लौटाएं

निम्नलिखित मारियाडीबी उदाहरण केवल उन पंक्तियों को लौटाते हैं जिनमें किसी दिए गए कॉलम में संख्यात्मक मान होते हैं।

ये उदाहरण REGEXP . का उपयोग करते हैं निर्दिष्ट पैटर्न से मेल खाने वाले मानों को वापस करने के लिए कार्य करता है।

नमूना डेटा

मान लीजिए हम इस तरह एक टेबल बनाते हैं:

DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
    c1 varchar(255)
);

INSERT INTO t1 (c1) VALUES 
    ('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');

SELECT * FROM t1;

तालिका अब बनाई गई है और इसमें निम्न डेटा शामिल है:

+-----------+
| c1        |
+-----------+
| 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 |
+-----------+

कॉलम एक varchar(255) है कॉलम, इसलिए यह संख्यात्मक नहीं है। इसमें संख्याएं हो सकती हैं (और करता है) लेकिन इन्हें वर्ण डेटा के रूप में संग्रहीत किया जाता है। इसमें मनमाना पाठ भी हो सकता है (जो यह करता है)।

सभी संख्यात्मक मान लौटाएं

उपरोक्त तालिका से सभी संख्यात्मक मान वापस करने के लिए हम निम्नलिखित क्वेरी का उपयोग कर सकते हैं:

SELECT c1
FROM t1 
WHERE c1 REGEXP '^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$';

परिणाम:

+--------+
| c1     |
+--------+
| 0      |
| 1      |
| +1     |
| -1     |
| 00.00  |
| 73.45  |
| +73.45 |
| -73.45 |
| .246   |
| -.34e7 |
| 1.2e+4 |
| e7     |
| +e0    |
+--------+

रिटर्न इंटीजर

अगर हम केवल पूर्णांकों को वापस करना चाहते हैं, तो क्वेरी बहुत आसान हो सकती है:

SELECT c1
FROM t1 
WHERE c1 REGEXP '^[0-9]+$';

परिणाम:

+------+
| c1   |
+------+
| 0    |
| 1    |
+------+

संख्यात्मक डेटा शामिल है

अगर हम उन पंक्तियों को खोजना चाहते हैं जिनमें केवल शामिल . है संख्यात्मक डेटा (भले ही उनमें गैर-संख्यात्मक डेटा भी हो), हम निम्न कार्य कर सकते हैं:

SELECT c1 
FROM t1 
WHERE c1 REGEXP '[0-9]+';

परिणाम:

+-----------+
| c1        |
+-----------+
| 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 कैरेक्टर क्लासेस

MariaDB POSIX वर्ण वर्गों का समर्थन करता है, जिसका अर्थ है कि हम [:digit:] . का उपयोग कर सकते हैं [0-9] . के बजाय हमारे रेगुलर एक्सप्रेशन में।

उदाहरण:

SELECT c1
FROM t1 
WHERE c1 REGEXP '^[[:digit:]]?$';

परिणाम:

+------+
| c1   |
+------+
| 0    |
| 1    |
+------+

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मारियाडीबी में स्ट्रिंग्स और नंबरों को जोड़ने के 2 तरीके

  2. कैसे MATCH AGAINST MariaDB . में काम करता है

  3. मारियाडीबी में साइन () कैसे काम करता है

  4. MySQL और MariaDB माइग्रेशन के लिए शीर्ष ओपन सोर्स टूल्स

  5. कुबेरनेट्स के साथ प्रॉक्सीएसक्यूएल नेटिव क्लस्टरिंग