ऐसे अवसर हो सकते हैं जहां आपको गैर-संख्यात्मक मानों के लिए कॉलम की जांच करने की आवश्यकता हो। उदाहरण के लिए, आप पाते हैं कि एक कॉलम एक varchar
है कॉलम जब यह वास्तव में एक संख्यात्मक कॉलम होना चाहिए।
यह SQL सर्वर में ISNUMERIC()
के साथ आसानी से किया जा सकता है समारोह।
नमूना डेटा
मान लीजिए हम एक varchar
. के साथ एक टेबल बनाते हैं कॉलम, और डेटा इस प्रकार डालें:
DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (
c1 varchar(255)
);
INSERT INTO t1 (c1) VALUES
('0'),
('1'),
('+1'),
('-1'),
('+1'),
('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 | | +1 | | 00.00 | | 73.45 | | +73.45 | | -73.45 | | .246 | | -.34e7 | | 12.e-3 | | 1.2e+4 | | a | | 9afc | | e7 | | +e0 | | Ten | | 5 Dollars | +-----------+
उपरोक्त में से अधिकांश मान संख्यात्मक हैं, भले ही वे varchar
. में हों कॉलम। निम्नलिखित उदाहरण गैर-संख्यात्मक मानों के लिए इस कॉलम की जांच करते हैं।
ISNUMERIC()
समारोह
SELECT c1
FROM t1
WHERE ISNUMERIC(c1) <> 1;
परिणाम:
+-----------+ | c1 | |-----------| | a | | 9afc | | e7 | | +e0 | | Ten | | 5 Dollars | +-----------+
यहां, मैंने ISNUMERIC()
. का उपयोग किया है नॉट इक्वल टू (<>
.) के साथ फंक्शन ) ऑपरेटर उन मानों की जांच करने के लिए जो संख्यात्मक नहीं हैं।
कॉलम के varchar
. होने का एक अच्छा कारण हो सकता है संख्यात्मक के बजाय। लेकिन यदि नहीं, तो मानों को उनके संख्यात्मक समकक्षों में परिवर्तित किया जाना चाहिए, और फिर कॉलम के डेटा प्रकार को एक संख्यात्मक प्रकार में बदला जाना चाहिए। यह डेटाबेस की डेटा अखंडता को बनाए रखने में मदद करेगा।
ऐसे मान ढूंढें जिनमें कोई संख्या न हो
हम उन सभी पंक्तियों को वापस करने के लिए निम्न क्वेरी का उपयोग कर सकते हैं जिनमें संख्यात्मक मान नहीं हैं।
SELECT c1
FROM t1
WHERE c1 NOT LIKE '%[0-9]%';
परिणाम:
+------+ | c1 | |------| | a | | Ten | +------+
यह पिछले उदाहरण से भिन्न परिणाम है, क्योंकि हम केवल उन सभी मानों की तलाश कर रहे हैं जिनमें शामिल नहीं है कोई संख्यात्मक डेटा। पिछले उदाहरण में, हम उन मानों की तलाश कर रहे थे जो संख्यात्मक नहीं हैं।