কম্পিউটার টিউটোরিয়াল

MySQL-এ VARCHAR কালামে নম্বর সংরক্ষণ করে CAST দিয়ে তুলনা করা

যদি নম্বরিক ডেটা VARCHAR কালামে থাকে, তবে স্ট্রিং তুলনা (lexicographic) হয়, যা ভুল ফলাফল দেয়। CAST(... AS SIGNED) বা CAST(... AS UNSIGNED) দিয়ে নম্বরে কনভার্ট করে তুলনা করতে হয়।

টেবিল তৈরি এবং ডেটা ইনসার্ট

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');
mysql> INSERT INTO DemoTable(StudentScore) VALUES('100');
mysql> INSERT INTO DemoTable(StudentScore) VALUES('56');
mysql> INSERT INTO DemoTable(StudentScore) VALUES('98');

সকল রেকর্ড

+-----------+--------------+
| StudentId | StudentScore |
+-----------+--------------+
| 1         | 90           |
| 2         | 100          |
| 3         | 56           |
| 4         | 98           |
+-----------+--------------+

CAST দিয়ে তুলনা (৯১ এর চেয়ে বড়)

mysql> SELECT * FROM DemoTable
    -> WHERE CAST(StudentScore AS SIGNED) > 91;

আউটপুট:

+-----------+--------------+
| StudentId | StudentScore |
+-----------+--------------+
| 2         | 100          |
| 4         | 98           |
+-----------+--------------+

সতর্কতা: স্ট্রিং হিসেবে তুলনা করলে '100' > '91' মিথ্যা হয় (কারণ '1' < '9')। তাই CAST অপরিহার্য।

  1. MySQL-এ একটি ফিল্ড সিলেক্ট করুন, যদি NULL হয় তবে অন্যটি সিলেক্ট করুন

  2. MySQL-এ varchar থেকে datetime-এ রূপান্তর ও তুলনা করা

  3. MySQL-এ VARCHAR কলামে স্ট্রিং ও সংখ্যা মিশ্রিত ডেটা সর্ট করা (ORDER BY + 0)

  4. MySQL에서 DOUBLE 타입 길이와 소수점 자릿수 지정하기