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

Sắp xếp tùy chỉnh giá trị chứa chữ và ký tự đặc biệt với ORDER BY FIELD() MySQL

Để sắp xếp các chuỗi chứa chữ cái và ký tự đặc biệt (+, _, ...) theo thứ tự tùy ý, bạn dùng ORDER BY FIELD(column, 'val1', 'val2', ...).

Ví dụ minh họa

Tạo bảng:

mysql> create table DemoTable ( 
    Title varchar(100) 
);

Chèn dữ liệu:

mysql> insert into DemoTable values('Java_1+');
mysql> insert into DemoTable values('MySQL_23+');
mysql> insert into DemoTable values('MongoDB++');
mysql> insert into DemoTable values('C++_23');

Hiển thị dữ liệu gốc:

mysql> select * from DemoTable;

Kết quả:

+-----------+
| Title     |
+-----------+
| Java_1+   |
| MySQL_23+ |
| MongoDB++ |
| C++_23    |
+-----------+

Truy vấn sắp xếp tùy chỉnh với FIELD()

mysql> select * from DemoTable 
order by field(Title,'MySQL_23+','C++_23','Java_1+','MongoDB++');

Kết quả:

+-----------+
| Title     |
+-----------+
| MySQL_23+ |
| C++_23    |
| Java_1+   |
| MongoDB++ |
+-----------+

Giải thích:

  • FIELD(Title, 'MySQL_23+', 'C++_23', 'Java_1+', 'MongoDB++') trả về 1,2,3,4 tương ứng
  • Sắp xếp theo số trả về → đúng thứ tự liệt kê
  • Giá trị không có trong danh sách FIELD() → trả về 0 → xếp đầu (nếu ASC)

Cách này rất hữu ích khi cần sắp xếp theo thứ tự business logic (không phải alphabet/number), ví dụ: trạng thái đơn hàng (Pending, Processing, Shipped, Delivered), mức độ ưu tiên (High, Medium, Low), v.v.