12

我找不到对转换为浮点数的 varchar 列进行排序的方法。这是我的 SQL 请求:

SELECT guid, number FROM table ORDER BY 'CAST(number AS FLOAT) DESC'

“数字”列的定义如下:

number  varchar(20) ascii_general_ci

在此列中为我的测试定义的值是:

0.00
200.00
20.00
100.00

MySQL 完全忽略 CAST 运算符并按 guid 对列进行排序...

MySQL中是否存在错误或者我做错了什么?

4

2 回答 2

37

试试这个技巧(有助于将字符串排序为数字)-

SELECT guid, number FROM table ORDER BY number * 1 DESC

它将帮助 MySQL 将字符串转换为数字。


另一种解决方案 -

...CAST(value as DECIMAL(10,5))
于 2012-05-17T10:28:14.240 回答
-1

如果您已使用 GUID,则应设置varchar(40) 您可以使用的大小uuid()

我已经使用了

select uuid(), number order by 'cast(number as float) desc';

它工作正常。如果这不是您想要的,您可以发送您的整个代码吗?

于 2012-05-17T10:38:27.543 回答