Để 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.