MySQL में CAST() फ़ंक्शन का उपयोग करके VARCHAR कॉलम में संग्रहीत संख्यात्मक स्ट्रिंग्स की संख्यात्मक तुलना करें।
उदाहरण: टेबल बनाना और डेटा डालना
mysql> CREATE TABLE DemoTable (
-> StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> StudentScore VARCHAR(100)
-> );
Query OK, 0 rows affected (0.66 sec)
mysql> INSERT INTO DemoTable(StudentScore) VALUES('90'), ('100'), ('56'), ('98');
सभी रिकॉर्ड देखना
mysql> SELECT * FROM DemoTable;
आउटपुट
+-----------+--------------+ | StudentId | StudentScore | +-----------+--------------+ | 1 | 90 | | 2 | 100 | | 3 | 56 | | 4 | 98 | +-----------+--------------+ 4 rows in set (0.00 sec)
कॉलम VARCHAR है, इसलिए स्ट्रिंग तुलना होगी: '100' < '56' (क्योंकि '1' < '5')।
CAST के साथ संख्यात्मक तुलना
mysql> SELECT * FROM DemoTable WHERE CAST(StudentScore AS SIGNED) > 91;
आउटपुट
+-----------+--------------+ | StudentId | StudentScore | +-----------+--------------+ | 2 | 100 | | 4 | 98 | +-----------+--------------+ 2 rows in set (0.00 sec)
सही परिणाम: 100 और 98, 91 से अधिक हैं।
CAST विकल्प:
AS SIGNED- हस्ताक्षरित पूर्णांक (ऋणात्मक संभव)AS UNSIGNED- बिना हस्ताक्षर वाला पूर्णांक (केवल धनात्मक)AS DECIMAL(10,2)- दशमलव संख्याAS CHAR- स्ट्रिंग (डिफ़ॉल्ट)
शॉर्टकट: StudentScore + 0 या StudentScore * 1 भी संख्यात्मक संदर्भ में कास्ट करता है।
सावधानी: गैर-संख्यात्मक स्ट्रिंग (जैसे 'abc') कास्ट करने पर 0 बन जाता है (चेतावनी के साथ)। डेटा सत्यापन के लिए StudentScore REGEXP '^[0-9]+$' पहले जांचें।
बेहतर डिज़ाइन: संख्यात्मक डेटा के लिए VARCHAR के बजाय INT, DECIMAL जैसे संख्यात्मक डेटा प्रकार का उपयोग करें।