ใช้ 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