CAST() फंक्शन से VARCHAR को UNSIGNED INTEGER में बदलना
जब संख्यात्मक डेटा VARCHAR कॉलम में स्टोर होता है और उस पर गणना या सही सॉर्टिंग करनी हो, तो CAST() फंक्शन का उपयोग करें।
टेबल बनाना और डेटा इन्सर्ट करना
CREATE TABLE DemoTable868(Amount VARCHAR(100));
INSERT INTO DemoTable868 VALUES('781');
INSERT INTO DemoTable868 VALUES('990');
INSERT INTO DemoTable868 VALUES('1002');
INSERT INTO DemoTable868 VALUES('560');
INSERT INTO DemoTable868 VALUES('890');
INSERT INTO DemoTable868 VALUES('9890');
INSERT INTO DemoTable868 VALUES('8723');
मौजूदा डेटा (स्ट्रिंग के रूप में)
+--------+ | Amount | +--------+ | 781 | | 990 | | 1002 | | 560 | | 890 | | 9890 | | 8723 | +--------+
क्वेरी: कन्वर्ट करके डिसेंडिंग ऑर्डर में
SELECT CAST(Amount AS UNSIGNED) AS Amount FROM DemoTable868 ORDER BY Amount DESC;
आउटपुट (सही न्यूमेरिक सॉर्टिंग)
+--------+ | Amount | +--------+ | 9890 | | 8723 | | 1002 | | 990 | | 890 | | 781 | | 560 | +--------+
महत्वपूर्ण बिंदु
UNSIGNEDकेवल नॉन-नेगेटिव इंटीजर के लिए (0 से 4294967295)- नेगेटिव नंबर्स के लिए
SIGNEDउपयोग करें - डेसीमल के लिए
DECIMAL(10,2)याFLOATउपयोग करें CAST()ANSI SQL स्टैंडर्ड है,CONVERT()MySQL-विशिष्ट विकल्प है
वैकल्पिक सिंटैक्स
-- CONVERT का उपयोग SELECT CONVERT(Amount, UNSIGNED) AS Amount FROM DemoTable868 ORDER BY Amount DESC; -- शॉर्टकास्ट (MySQL विशिष्ट) SELECT Amount + 0 AS Amount FROM DemoTable868 ORDER BY Amount DESC;
चेतावनी
अगर VARCHAR में नॉन-न्यूमेरिक कैरेक्टर हैं (जैसे '123abc'), तो कन्वर्जन के दौरान वे 0 या आंशिक मान बन सकते हैं। डेटा वैलिडेशन पहले करें।