Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Sắp xếp theo 3 ký tự cuối chuỗi trong MySQL

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ố.