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

Cách ORDER BY 2 ký tự cuối chuỗi trong MySQL?

Sắp xếp theo ký tự cuối chuỗi trong MySQL với RIGHT()

Sử dụng hàm RIGHT(column, 2) trong mệnh đề ORDER BY để sắp xếp dựa trên 2 ký tự cuối của chuỗi.

Cú pháp

SELECT yourColumnName FROM yourTableName ORDER BY RIGHT(yourColumnName, 2);

Ví dụ: Sắp xếp CustomerId theo 2 số cuối

Tạo bảng:

mysql> CREATE TABLE OrderByLast2CharactersDemo (
    -> CustomerId VARCHAR(20),
    -> CustomerName VARCHAR(20)
    -> );

Chèn dữ liệu (định dạng: Tên-2số):

mysql> INSERT INTO OrderByLast2CharactersDemo VALUES
('John-98', 'John'), ('Carol-91', 'Carol'), ('Bob-99', 'Bob'), ('David-67', 'David');

Dữ liệu gốc:

+------------+--------------+
| CustomerId | CustomerName |
+------------+--------------+
| John-98    | John         |
| Carol-91   | Carol        |
| Bob-99     | Bob          |
| David-67   | David        |
+------------+--------------+

Trường hợp 1: Sắp xếp tăng dần (ASC)

mysql> SELECT CustomerId FROM OrderByLast2CharactersDemo ORDER BY RIGHT(CustomerId, 2);

Kết quả (67, 91, 98, 99):

+------------+
| CustomerId |
+------------+
| David-67   |
| Carol-91   |
| John-98    |
| Bob-99     |
+------------+

Trường hợp 2: Sắp xếp giảm dần (DESC)

mysql> SELECT CustomerId FROM OrderByLast2CharactersDemo ORDER BY RIGHT(CustomerId, 2) DESC;

Kết quả (99, 98, 91, 67):

+------------+
| CustomerId |
+------------+
| Bob-99     |
| John-98    |
| Carol-91   |
| David-67   |
+------------+

Ứng dụng thực tế

  • Sắp xếp mã sản phẩm theo số serial cuối
  • Sắp xếp mã nhân viên theo 2 chữ số cuối
  • Phân loại theo hậu tố mã vùng, mã bưu chính

Lưu ý

  • RIGHT() trả về chuỗi, sắp xếp theo thứ tự từ điển (lexicographic)
  • Nếu 2 ký tự cuối là số, sắp xếp chuỗi '10' < '2' → cân nhắc CAST(RIGHT(col,2) AS UNSIGNED)
  • Hiệu năng: Không dùng index, full table scan