Dùng hàm RIGHT(cot, 3) trong ORDER BY để sắp xếp theo 3 ký tự cuối cùng của chuỗi.
Cú pháp
SELECT *
FROM ten_bang
ORDER BY RIGHT(ten_cot, 3) [ASC|DESC];
Ví dụ minh họa
Tạo bảng OrderByLast3Chars:
CREATE TABLE OrderByLast3Chars (
EmployeeId INT NOT NULL AUTO_INCREMENT,
EmployeeName VARCHAR(20),
EmployeeAge INT,
PRIMARY KEY (EmployeeId)
);
INSERT INTO OrderByLast3Chars (EmployeeName, EmployeeAge) VALUES
('Carol_901',24), ('Bob_101',21), ('Sam_107',22),
('Mile_677',26), ('John_978',27), ('David_876',29);
Sắp xếp tăng dần (ASC)
SELECT * FROM OrderByLast3Chars ORDER BY RIGHT(EmployeeName, 3) ASC;
+------------+--------------+-------------+
| EmployeeId | EmployeeName | EmployeeAge |
+------------+--------------+-------------+
| 1 | Carol_901 | 24 |
| 2 | Bob_101 | 21 |
| 3 | Sam_107 | 22 |
| 4 | Mile_677 | 26 |
| 5 | John_978 | 27 |
| 6 | David_876 | 29 |
+------------+--------------+-------------+
Thứ tự: 101, 107, 677, 876, 901, 978
Sắp xếp giảm dần (DESC)
SELECT * FROM OrderByLast3Chars ORDER BY RIGHT(EmployeeName, 3) DESC;
+------------+--------------+-------------+
| EmployeeId | EmployeeName | EmployeeAge |
+------------+--------------+-------------+
| 5 | John_978 | 27 |
| 1 | Carol_901 | 24 |
| 6 | David_876 | 29 |
| 4 | Mile_677 | 26 |
| 3 | Sam_107 | 22 |
| 2 | Bob_101 | 21 |
+------------+--------------+-------------+
Thứ tự: 978, 901, 876, 677, 107, 101
Lưu ý: RIGHT() trả về chuỗi, sắp xếp theo thứ tự từ điển (lexicographic). Nếu 3 ký tự cuối là số, có thể ép kiểu: CAST(RIGHT(cot,3) AS UNSIGNED) để sắp xếp theo giá trị số.