Để sắp xếp các chuỗi theo phần cuối (ví dụ: mã user 'User1234', 'User9874' sắp theo 4 ký tự cuối '1234', '9874'), dùng hàm RIGHT() trong mệnh đề ORDER BY.
Tạo bảng và dữ liệu
mysql> CREATE TABLE DemoTable (UserId VARCHAR(100));
mysql> INSERT INTO DemoTable VALUES
('User1234'), ('User9874'), ('User9994'), ('User1211'), ('User1012');
Dữ liệu gốc
mysql> SELECT * FROM DemoTable;
+----------+
| UserId |
+----------+
| User1234 |
| User9874 |
| User9994 |
| User1211 |
| User1012 |
+----------+
Trường hợp 1: Sắp xếp tăng dần theo 4 ký tự cuối
mysql> SELECT * FROM DemoTable ORDER BY RIGHT(UserId, 4);
+----------+
| UserId |
+----------+
| User1012 |
| User1211 |
| User1234 |
| User9874 |
| User9994 |
+----------+
Trường hợp 2: Sắp xếp giảm dần theo 4 ký tự cuối
mysql> SELECT * FROM DemoTable ORDER BY RIGHT(UserId, 4) DESC;
+----------+
| UserId |
+----------+
| User9994 |
| User9874 |
| User1234 |
| User1211 |
| User1012 |
+----------+
Hàm liên quan
LEFT(str, len): Lấylenký tự từ bên trái.SUBSTRING(str, pos, len)/MID(): Lấy chuỗi con từ vị trípos(1-based).SUBSTRING_INDEX(str, delim, count): Lấy phần trước/sau ký tự phân tách.
Lưu ý hiệu năng
ORDER BY RIGHT(col, 4) không dùng index trên col. Nếu cần hiệu năng, tạo Generated Column lưu phần đuôi và index trên cột đó (MySQL 5.7+).