คอลัมน์ VARCHAR ต้องใช้ CAST(... AS SIGNED) แปลงเป็นตัวเลขก่อนเปรียบเทียบ
สร้างตารางและเพิ่มข้อมูลตัวเลขใน 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)
คิวรีหาค่าสูงสุด (แปลงเป็น SIGNED ก่อน)
mysql> select max(cast(Value AS SIGNED)) from DemoTable;
+----------------------------+ | max(cast(Value AS SIGNED)) | +----------------------------+ | 908345 | +----------------------------+ 1 row in set (0.05 sec)
ข้อสังเกต: หากไม่ CAST การเปรียบเทียบจะเป็นแบบสตริง (lexicographic) ให้ผลผิด เช่น '900' > '1090' เพราะ '9' > '1'