Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

หาค่ามากกว่าที่กำหนดจากคอลัมน์ VARCHAR ใน MySQL

คอลัมน์ 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'