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

Sắp xếp cột chuỗi theo phần đuôi (substring) trong MySQL với RIGHT()

Để 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ấy len ký 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+).