VARCHAR कॉलम में संग्रहीत संख्याओं को संख्यात्मक क्रम में सॉर्ट करने के लिए CAST() फंक्शन का उपयोग करें।
सिंटैक्स
SELECT * FROM yourTableName ORDER BY CAST(yourColumnName AS DECIMAL(10,2)) DESC;
उदाहरण
टेबल बनाना
mysql> create table SortingStringDemo ( -> Amount varchar(10) -> ); Query OK, 0 rows affected (0.91 sec)
स्ट्रिंग के रूप में संख्याएं डालना
mysql> insert into SortingStringDemo values('12.34');
mysql> insert into SortingStringDemo values('124.50');
mysql> insert into SortingStringDemo values('9.59');
mysql> insert into SortingStringDemo values('150.68');
mysql> insert into SortingStringDemo values('600.54');
बिना CAST के सॉर्ट (गलत - वर्णानुक्रम)
mysql> select *from SortingStringDemo order by Amount desc;
+--------+ | Amount | +--------+ | 9.59 | | 600.54 | | 150.68 | | 124.50 | | 12.34 | +--------+
CAST के साथ सॉर्ट (सही - संख्यात्मक)
mysql> select *from SortingStringDemo order by cast(Amount as Decimal(6,2)) desc;
+--------+ | Amount | +--------+ | 600.54 | | 150.68 | | 124.50 | | 12.34 | | 9.59 | +--------+
CAST पैरामीटर समझना
DECIMAL(6,2)— कुल 6 अंक, 2 दशमलव स्थान- अपने डेटा के अनुसार आकार समायोजित करें:
DECIMAL(10,2),DECIMAL(15,4)आदि - पूर्णांक के लिए:
CAST(col AS UNSIGNED)याCAST(col AS SIGNED)
अन्य उपयोगी तरीके
-- 0 जोड़कर इम्प्लिसिट कन्वर्जन SELECT * FROM SortingStringDemo ORDER BY Amount+0 DESC; -- CAST के बजाय CONVERT SELECT * FROM SortingStringDemo ORDER BY CONVERT(Amount, DECIMAL(10,2)) DESC;