使用CAST操作符将VARCHAR列排序为FLOAT在MySQL中不起作用

使用CAST操作符将VARCHAR列排序为FLOAT在MySQL中不起作用,mysql,casting,Mysql,Casting,我找不到一种方法对铸造为float的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中有错误吗?或者我做错了什

我找不到一种方法对铸造为float的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中有错误吗?或者我做错了什么吗?

试试这个技巧,它可以帮助将字符串按数字排序-

SELECT guid, number FROM table ORDER BY number * 1 DESC
它将帮助MySQL将字符串转换为数字

另一个解决方案-

...CAST(value as DECIMAL(10,5))

如果使用GUID,则大小应为varchar40 相反,您可以使用uuid

我是用电脑做的

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

很好用。如果这不是您想要的,您可以发送您的全部代码吗?

它可以工作!!!我仍然不明白为什么施法者不工作,但是你的技巧解决了我的问题。你不能施法使其浮动。看一看CAST函数引用,没有浮点类型。哦,你说得对,如果我这样做了:选择guid,从表中按CASTnumber排序的数字,作为带符号的DESC,不带引号,就行了!我试着签名,但不是没有引号。感谢一个lotNote,SIGNED将返回整数值。^^ ORDER BY'CASTnumber AS FLOAT DESC'的结果与ORDER BY'foo'或ORDER BY'ehrlkherklth ektl k'的结果相同。语句中的ORDER BY没有意义……您只是按固定字符串排序