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

PostgreSQL डेटाबेस कॉलम से गैर-संख्यात्मक मान लौटाएं

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

नमूना डेटा

आइए नमूना डेटा के साथ एक तालिका बनाएं:

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

परिणाम:

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

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

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

SELECT c1
FROM t1 
WHERE c1 !~ '^[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 !~ '[0-9]+';

परिणाम:

 c1  
-----
 a
 Ten

PostgreSQL में, !~ एक केस-संवेदी ऑपरेटर है जिसका उपयोग उन मानों को वापस करने के लिए किया जाता है जो दिए गए रेगुलर एक्सप्रेशन से मेल नहीं खाते। केस-संवेदी मिलान के लिए, !~* . का उपयोग करें ।

आप ~ . का उपयोग कर सकते हैं उन सभी पंक्तियों को वापस करने के लिए जो करती हैं रेगुलर एक्सप्रेशन से मिलान करें (और ~* केस-असंवेदनशील मैचों के लिए)।


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

  2. PostgreSQL में तार्किक प्रतिकृति का अवलोकन

  3. उसी INSERT के दौरान दूसरे कॉलम में सीरियल कॉलम का संदर्भ मान

  4. किसी पैटर्न से मेल खाने वाले मान वाले ऑब्जेक्ट के लिए JSON सरणी खोजें

  5. एक स्तर से अननेस्ट सरणी