MySQL में, आप कॉलम से गैर-संख्यात्मक डेटा वापस करने के लिए निम्न की तरह एक क्वेरी चला सकते हैं।
यह तब मददगार हो सकता है जब आपको कभी ऐसा कॉलम मिले जिसमें संख्यात्मक डेटा हो, लेकिन इसे varchar
के रूप में सेट किया गया था या char
कॉलम। आप इस क्वेरी का उपयोग किसी भी गैर-संख्यात्मक मान को खोजने के लिए कर सकते हैं जो शायद कॉलम में डाला गया हो। फिर आप इससे किसी भी तरह से निपट सकते हैं, जैसे कि उन्हें संख्यात्मक में परिवर्तित करें, फिर कॉलम प्रकार बदलें।
नमूना डेटा
मान लीजिए हम इस तरह एक टेबल बनाते हैं:
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
c1 varchar(255)
);
INSERT INTO t1 (c1) VALUES
('0'),
('1'),
('+1'),
('-1'),
('.5'),
('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 | | .5 | | 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 NOT REGEXP '^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$';
परिणाम:
+-----------+ | c1 | +-----------+ | 12.e-3 | | a | | 9afc | | Ten | | 5 Dollars | +-----------+
गैर-पूर्णांक लौटाएं
अगर हम केवल गैर-पूर्णांक लौटाना चाहते हैं, तो क्वेरी बहुत आसान हो सकती है:
SELECT c1
FROM t1
WHERE c1 NOT REGEXP '^[0-9]+$';
परिणाम:
+-----------+ | c1 | +-----------+ | +1 | | -1 | | .5 | | 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 NOT REGEXP '[0-9]+';
परिणाम:
+------+ | c1 | +------+ | a | | Ten | +------+