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

SQLite में गैर-संख्यात्मक मान वापस करने के 2 तरीके

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

नमूना डेटा

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

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

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),
    ('Ten'),
    ('5 Dollars');

SELECT * FROM t1;

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

c1        
----------
0         
1         
1         
-1        
0.0       
73.45     
73.45     
-73.45    
0.246     
-3400000.0
0.012     
12000.0   
Ten       
5 Dollars 

SQLite एक गतिशील प्रकार प्रणाली का उपयोग करता है, जहां किसी मान का डेटाटाइप स्वयं मान से जुड़ा होता है, न कि स्तंभ (जैसा कि अन्य RDBMS के साथ होता है)। जब मैंने तालिका बनाई, तो मैंने डेटा प्रकार निर्दिष्ट नहीं किया। इसलिए, मान किसी भी प्रकार के हो सकते हैं।

Typeof() समारोह

संख्यात्मक प्रकारों को बाहर करने के लिए हम SQLite के typeof() फ़ंक्शन का उपयोग कर सकते हैं (real और integer ) क्वेरी में वापस आने से:

SELECT c1
FROM t1
WHERE typeof(c1) <> 'real'
AND typeof(c1) <> 'integer';

परिणाम:

c1       
---------
Ten      
5 Dollars

यहां एक और उदाहरण दिया गया है जो प्रत्येक पंक्ति के लिए डेटा प्रकार को आउटपुट करता है:

SELECT 
    c1,
    typeof(c1)
FROM t1;

परिणाम:

c1          typeof(c1)
----------  ----------
0           integer   
1           integer   
1           integer   
-1          integer   
0.0         real      
73.45       real      
73.45       real      
-73.45      real      
0.246       real      
-3400000.0  real      
0.012       real      
12000.0     real      
Ten         text      
5 Dollars   text      

यह हमें दिखाता है कि केवल अंतिम दो पंक्तियों में गैर-संख्यात्मक डेटा होता है (उनमें text . होता है जानकारी)।

REGEXP समारोह

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

उदाहरण:

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

परिणाम:

c1       
---------
Ten      
5 Dollars

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

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

SELECT c1
FROM t1
WHERE typeof(c1) <> 'integer';

परिणाम:

c1        
----------
0.0       
73.45     
73.45     
-73.45    
0.246     
-3400000.0
0.012     
12000.0   
Ten       
5 Dollars 

इसमें हस्ताक्षरित पूर्णांक भी शामिल नहीं हैं।

या यदि हमारी आवश्यकताएं अधिक विशिष्ट हैं, तो हम रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं:

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

परिणाम:

c1        
----------
-1        
0.0       
73.45     
73.45     
-73.45    
0.246     
-3400000.0
0.012     
12000.0   
Ten       
5 Dollars 

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

यदि हम उन पंक्तियों को खोजना चाहते हैं जिनमें कोई संख्यात्मक डेटा नहीं है, तो हम निम्न कार्य कर सकते हैं:

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

परिणाम:

c1 
---
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. Play Store पर Android पुश अपडेट

  2. SQLite - एक डेटाबेस ड्रॉप करें

  3. SQLite में अपरकेस में कैसे बदलें

  4. SQLite मैक्स () कैसे काम करता है

  5. SQLite तालिका बाधा अद्वितीय और ऑन कॉन्फ्लिक्ट रिप्लेस उपयोग