MySQL-এ CAST() ফাংশন ব্যবহার করে VARCHAR কলামকে DECIMAL/DOUBLE-এ রূপান্তর করা
স্ট্রিং (VARCHAR) আকারে সংরক্ষিত সংখ্যাগুলো গাণিতিক অপারেশনের জন্য বা সর্টিংয়ের জন্য সংখ্যা টাইপে (DECIMAL/DOUBLE) রূপান্তর করতে CAST() ফাংশন ব্যবহার করা হয়।
সিনট্যাক্স
SELECT yourColumnName1, yourColumnName2, ...,
CAST(yourColumnName AS DECIMAL(totalDigits, decimalPlaces)) AS AliasName
FROM yourTableName
ORDER BY AliasName DESC;
উদাহরণ
টেবিল তৈরি
mysql> CREATE TABLE VarcharToDouble (
-> Id INT NOT NULL AUTO_INCREMENT,
-> Name VARCHAR(10),
-> Amount VARCHAR(10),
-> PRIMARY KEY(Id)
-> );
ডেটা ইনসার্ট
mysql> INSERT INTO VarcharToDouble(Name, Amount) VALUES('John', '456.78');
mysql> INSERT INTO VarcharToDouble(Name, Amount) VALUES('Larry', '8465.98');
mysql> INSERT INTO VarcharToDouble(Name, Amount) VALUES('Mike', '9083.45');
mysql> INSERT INTO VarcharToDouble(Name, Amount) VALUES('Sam', '46475.50');
mysql> INSERT INTO VarcharToDouble(Name, Amount) VALUES('Carol', '10003.35');
আসল ডেটা (স্ট্রিং হিসেবে)
mysql> SELECT * FROM VarcharToDouble;
+----+-------+----------+ | Id | Name | Amount | +----+-------+----------+ | 1 | John | 456.78 | | 2 | Larry | 8465.98 | | 3 | Mike | 9083.45 | | 4 | Sam | 46475.50 | | 5 | Carol | 10003.35 | +----+-------+----------+
CAST() দিয়ে DECIMAL(10,2)-এ রূপান্তর এবং ডেসেন্ডিং সর্ট
mysql> SELECT Id, Name, CAST(Amount AS DECIMAL(10,2)) AS TotalAmount
-> FROM VarcharToDouble
-> ORDER BY TotalAmount DESC;
ফলাফল
+----+-------+-------------+ | Id | Name | TotalAmount | +----+-------+-------------+ | 5 | Carol | 10003.35 | | 4 | Sam | 46475.50 | | 3 | Mike | 9083.45 | | 2 | Larry | 8465.98 | | 1 | John | 456.78 | +----+-------+-------------+
নোট: DECIMAL(10,2) মানে মোট ১০ ডিজিট, দশমিকের পর ২ ডিজিট। CAST(... AS DOUBLE) ও ব্যবহার করা যায়, কিন্তু আর্থিক গণনার জন্য DECIMAL ভালো (Precision issue নেই)।