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

मारियाडीबी में एक कॉलम में सभी गैर-संख्यात्मक मान खोजें

यदि आप कभी भी एक वर्ण स्तंभ का सामना करते हैं जो एक संख्यात्मक स्तंभ होना चाहिए, तो इस बात की हमेशा संभावना होती है कि इसमें गैर-संख्यात्मक डेटा हो, जिसके बारे में आप नहीं जानते हैं।

मारियाडीबी में, आप कॉलम से गैर-संख्यात्मक डेटा वापस करने के लिए निम्न की तरह एक क्वेरी चला सकते हैं।

नमूना डेटा

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

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;

वह SELECT इस में अंतिम परिणाम पर बयान:

+-----------+
| 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 NOT REGEXP '^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$';

परिणाम:

+-----------+
| c1        |
+-----------+
| 12.e-3    |
| a         |
| 9afc      |
| Ten       |
| 5 Dollars |
+-----------+

गैर-पूर्णांक लौटाएं

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

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

परिणाम:

+-----------+
| c1        |
+-----------+
| +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 c1 
FROM t1 
WHERE c1 NOT REGEXP '[0-9]+';

परिणाम:

+------+
| c1   |
+------+
| a    |
| Ten  |
+------+

हम समान परिणाम प्राप्त करने के लिए POSIX कक्षा का उपयोग कर सकते हैं:

SELECT c1
FROM t1 
WHERE c1 NOT REGEXP '[[:digit:]]';

परिणाम:

+------+
| c1   |
+------+
| a    |
| Ten  |
+------+

  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. ऑर्केस्ट्रेशन टूल्स के बिना मारियाडीबी गैलेरा क्लस्टर चलाना - डीबी कंटेनर प्रबंधन:भाग दो

  3. Oracle डेटाबेस से MariaDB में स्थानांतरण - एक गहरा गोता

  4. SQL की शक्ति और प्रक्रियात्मक कथनों को MariaDB के Oracle संगतता मोड के साथ संयोजित करना

  5. ClusterControl में नया उपयोगकर्ता और LDAP प्रबंधन 1.8.2