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() समारोह

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

SELECT c1
FROM t1
WHERE typeof(c1) = 'real'
OR typeof(c1) = 'integer';

परिणाम:

c1        
----------
0         
1         
1         
-1        
0.0       
73.45     
73.45     
-73.45    
0.246     
-3400000.0
0.012     
12000.0   

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

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      

REGEXP समारोह

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

उदाहरण:

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

परिणाम:

c1        
----------
0         
1         
1         
-1        
0.0       
73.45     
73.45     
-73.45    
0.246     
-3400000.0
0.012     
12000.0   

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

यदि हम केवल पूर्णांकों को वापस करना चाहते हैं, तो हम इस प्रकार क्वेरी को सरल बना सकते हैं:

SELECT c1
FROM t1
WHERE typeof(c1) = 'integer';

परिणाम:

c1
--
0 
1 
1 
-1

यह हस्ताक्षरित पूर्णांक भी लौटाता है।

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

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

परिणाम:

c1
--
0 
1 
1 

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

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

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

परिणाम:

c1        
----------
0         
1         
1         
-1        
0.0       
73.45     
73.45     
-73.45    
0.246     
-3400000.0
0.012     
12000.0   
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. एंड्रॉइड के लिए SQLCipher के साथ कैसे शुरुआत करें?

  2. एंड्रॉइड SQLite क्वेरी जहां कॉलम शून्य नहीं है और खाली नहीं है

  3. SQLite सबक्वेरी

  4. एंड्रॉइड:बल्क इंसर्ट, जब इंसर्ट हेल्पर पदावनत हो जाता है

  5. SQLite FTS3 तालिका की पंक्ति आईडी प्राप्त करें