บทความนี้สาธิตการเรียงลำดับข้อมูล Alphanumeric (ตัวอักษรผสมตัวเลข) ที่ตัวเลขอยู่ท้ายสตริง (เช่น John1023) โดยใช้ RIGHT() ดึงตัวเลขท้าย 4 หลักมาเรียง
สร้างตารางและข้อมูล ClientId แบบ Alphanumeric
mysql> CREATE TABLE DemoTable757(
Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
ClientId VARCHAR(100)
);
Query OK, 0 rows affected (0.53 sec)
mysql> INSERT INTO DemoTable757(ClientId) VALUES('John1023'), ('Carol9871'), ('David9098'), ('Adam9989'), ('Bob9789');
คิวรีเรียงตามตัวเลข 4 หลักท้าย
mysql> SELECT Id, ClientId FROM DemoTable757 ORDER BY RIGHT(ClientId, 4);
ผลลัพธ์ (เรียงตัวเลขท้าย: 1023, 9098, 9789, 9871, 9989)
+----+-----------+
| Id | ClientId |
+----+-----------+
| 1 | John1023 |
| 3 | David9098 |
| 5 | Bob9789 |
| 2 | Carol9871 |
| 4 | Adam9989 |
+----+-----------+
คำอธิบาย:
RIGHT(str, len)- ดึงตัวอักษร len ตัวจากขวาสุดRIGHT(ClientId, 4)- ดึง 4 ตัวสุดท้าย (สมมติเป็นตัวเลข 4 หลัก)- MySQL จะแปลงสตริงตัวเลขเป็นตัวเลขอัตโนมัติตอนเปรียบเทียบ (Implicit Cast)
ข้อจำกัด: ใช้ได้ก็ต่อเมื่อตัวเลขอยู่ท้ายและความยาวคงที่ หากความยาวไม่คงที่ ควรใช้ CAST(SUBSTRING(ClientId, LOCATE(...)) AS UNSIGNED) หรือ Regex Extract