คอลัมน์ชนิด VARCHAR ที่เก็บตัวเลขจะถูกเรียงแบบข้อความ (1, 10, 2, 20...) ใช้ CAST(... AS SIGNED) แปลงเป็นตัวเลขก่อนเรียง
สร้างตารางและเพิ่มข้อมูล
mysql> CREATE TABLE DemoTable (Id VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES ('3'), ('20'), ('34'), ('21'), ('78'), ('90');
ดูข้อมูล (เรียงแบบสตริง)
mysql> SELECT * FROM DemoTable;
+------+
| Id |
+------+
| 3 |
| 20 |
| 34 |
| 21 |
| 78 |
| 90 |
+------+
เรียงเป็นตัวเลข (มากไปน้อย)
mysql> SELECT * FROM DemoTable ORDER BY CAST(Id AS SIGNED) DESC;
ผลลัพธ์
+------+
| Id |
+------+
| 90 |
| 78 |
| 34 |
| 21 |
| 20 |
| 3 |
+------+
ชนิดข้อมูลใน CAST:
SIGNED— จำนวนเต็มมีเครื่องหมายUNSIGNED— จำนวนเต็มไม่มีเครื่องหมายDECIMAL— ทศนิยมCHAR— สตริง