Nếu CAST không hoạt động, dùng yourColumnName*1 với ORDER BY.
Cách 1: Nhân 1
SELECT yourColumnName1,yourColumnName2,...N FROM yourTableName ORDER BY yourColumnName*1 DESC;
Cách 2: Dùng CAST()
SELECT yourColumnName1,yourColumnName2,...N FROM yourTableName ORDER BY CAST(yourColumnName as DECIMAL(8,2)) DESC;
Demo: Bảng VarcharColumnAsFloatDemo cột Amount (VARCHAR).
Sắp xếp bằng CAST:
mysql> select Id,Amount from VarcharColumnAsFloatDemo order by cast(Amount as DECIMAL(8,2)) DESC;
Sắp xếp bằng Amount*1:
mysql> select Id,Amount from VarcharColumnAsFloatDemo order by Amount*1 desc;
Cả hai cho cùng kết quả sắp xếp số đúng: 6465.99, 6465.78, 6464.98, 3745.76, 3446.23, 2464.46, 645.90.