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