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

จัดเรียง VARCHAR ที่ผสมตัวเลขและตัวอักษรใน MySQL

ใช้ ORDER BY column+0, column สำหรับจัดเรียงตัวเลขในสตริง

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

mysql> create table DemoTable ( StudentCode varchar(20) ); 
Query OK, 0 rows affected (0.57 sec)
mysql> insert into DemoTable values('101J'); 
Query OK, 1 row affected (0.18 sec) 
mysql> insert into DemoTable values('100A'); 
Query OK, 1 row affected (0.10 sec) 
mysql> insert into DemoTable values('100B'); 
Query OK, 1 row affected (0.09 sec) 
mysql> insert into DemoTable values('101S'); 
Query OK, 1 row affected (0.16 sec) 
mysql> insert into DemoTable values('103M'); 
Query OK, 1 row affected (0.15 sec)

คิวรี่จัดเรียงตัวเลขหน้าก่อน แล้วตัวอักษร

mysql> select * from DemoTable order by StudentCode+0, StudentCode;

ผลลัพธ์

+-------------+ 
| StudentCode | 
+-------------+ 
| 100A        | 
| 100B        | 
| 101J        | 
| 101S        | 
| 103M        | 
+-------------+ 
5 rows in set, 5 warnings (0.00 sec)

เทคนิค: StudentCode+0 บังคับแปลงนำหน้าสตริงเป็นตัวเลข (100, 101, 103) | เรียงตัวเลขก่อน | ตัวอักษรท้ายใช้ StudentCode เรียงตามอักษร | Warning เกิดจากการแปลงสตริงที่ไม่ใช่ตัวเลข純เป็น 0