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

จัดเรียงข้อมูลที่มีจุดทศนิยมใน MySQL ให้ถูกต้อง

ใช้ CAST(... AS DECIMAL) เพื่อจัดเรียงตัวเลขใน VARCHAR ให้ถูกต้อง

สร้างตารางและเพิ่มข้อมูล

mysql> create table DemoTable ( Value varchar(20) ); 
Query OK, 0 rows affected (0.53 sec)
mysql> insert into DemoTable values('20'); 
Query OK, 1 row affected (0.14 sec) 
mysql> insert into DemoTable values('10.5'); 
Query OK, 1 row affected (0.19 sec) 
mysql> insert into DemoTable values('11'); 
Query OK, 1 row affected (0.13 sec) 
mysql> insert into DemoTable values('10'); 
Query OK, 1 row affected (0.11 sec) 
mysql> insert into DemoTable values('20.5'); 
Query OK, 1 row affected (0.13 sec)

คิวรี่จัดเรียงเป็นตัวเลข

mysql> select * from DemoTable order by CAST(Value AS DECIMAL) ASC;

ผลลัพธ์

+-------+ 
| Value | 
+-------+ 
| 10    | 
| 10.5  | 
| 11    | 
| 20    | 
| 20.5  | 
+-------+ 
5 rows in set (0.00 sec)

ปัญหา: VARCHAR เรียงแบบสตริง '10.5' < '11' (เพราะ '1'='1', '0'<'1') แต่ '20' < '10.5' (เพราะ '2'>'1') | แก้: CAST เป็น DECIMAL จะเปรียบเทียบค่าตัวเลขจริง