निम्न 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