যদি সংখ্যা VARCHAR কলামে স্টোর করা থাকে, তবে সেটি সরাসরি সংখ্যা হিসেবে তুলনা করা যায় না (লেক্সিকোগ্রাফিক্যালি তুলনা হয়)। CAST() ব্যবহার করে সাইনড ইন্টিজারে কনভার্ট করে তুলনা করুন।
টেবিল তৈরি (VARCHAR কলাম)
mysql> CREATE TABLE DemoTable (Value VARCHAR(100)); Query OK, 0 rows affected (1.02 sec)
ডেটা ইনসার্ট
mysql> INSERT INTO DemoTable VALUES ('900');
Query OK, 1 row affected (0.49 sec)
mysql> INSERT INTO DemoTable VALUES ('1090');
Query OK, 1 row affected (0.14 sec)
mysql> INSERT INTO DemoTable VALUES ('860');
Query OK, 1 row affected (0.25 sec)
mysql> INSERT INTO DemoTable VALUES ('12345');
Query OK, 1 row affected (0.30 sec)
mysql> INSERT INTO DemoTable VALUES ('908345');
Query OK, 1 row affected (0.16 sec)
রেকর্ড দেখানো
mysql> SELECT * FROM DemoTable;
আউটপুট:
+--------+ | Value | +--------+ | 900 | | 1090 | | 860 | | 12345 | | 908345 | +--------+ 5 rows in set (0.00 sec)
CAST দিয়ে সাইনড ইন্টিজারে কনভার্ট করে সর্বোচ্চ মান বের করা
mysql> SELECT MAX(CAST(Value AS SIGNED)) FROM DemoTable;
ফলাফল:
+----------------------------+ | MAX(CAST(Value AS SIGNED)) | +----------------------------+ | 908345 | +----------------------------+ 1 row in set (0.05 sec)
ব্যাখ্যা
CAST(Value AS SIGNED)- VARCHAR কে SIGNED INTEGER-এ কনভার্ট করে।UNSIGNED- শুধু ধনাত্মক সংখ্যা (০ থেকে ১৮৪৪৬৭৪৪০৭৩৭০৯৫৫১৬১৫)।MAX()- কনভার্ট করা সংখ্যাগুলোর সর্বোচ্চ মান বের করে।
স্ট্রিং তুলনা সমস্যা
বिना CAST-এ '908345' < '99' হবে TRUE (লেক্সিকোগ্রাফিক্যালি '9' > '1')। CAST দিয়ে সংখ্যা তুলনা করলে সঠিক ফলাফল পাওয়া যায়।
WHERE ক্লজে ব্যবহার
SELECT * FROM DemoTable WHERE CAST(Value AS SIGNED) > 999;
এটি ১০৯০, ১২৩৪৫, ৯০৮৩৪৫ রিটার্ন করবে।