SQL,带有小数条目的 varchar 字段 = ORDER BY 未正确排序

lib*_*ire 3 php mysql sql math numbers

所以我有一个带有 VARCHAR 字段的表。它用于对很多小数值进行排序:

假设我的 VARCHAR 字段中有以下条目:

  • 9.99
  • 263.28
  • 9.98

假设我想使用 ORDER BY varchar DESC 显示所有条目。结果将是:

  • 9.99
  • 9.98
  • 263.28

显然263.28应该是第一个。怎么了 ?

Upe*_*ari 6

如果 varchar 字段中有所有十进制值,则只需将其转换为十进制,然后应用 order by 子句。我对 mysql 数据类型和转换函数不太了解,但在 MS SQL 中你可以将其转换为十进制,例如

ORDER BY CAST(field AS DECIMAL(18,2)) DESC
Run Code Online (Sandbox Code Playgroud)

更新 :

是的,在MySQL中也有cast函数: http://dev.mysql.com/doc/refman/5.0/en/cast-functions.html