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

เรียงลำดับ Alphanumeric ใน MySQL ด้วย RIGHT() สำหรับตัวเลขท้ายสตริง

บทความนี้สาธิตการเรียงลำดับข้อมูล 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