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

Nic*_*DIA 12 mysql casting

我找不到一种方法来将varchar列排序为float.这是我的SQL请求:

SELECT guid, number FROM table ORDER BY 'CAST(number AS FLOAT) DESC'
Run Code Online (Sandbox Code Playgroud)

"数字"列的定义如下:

number  varchar(20) ascii_general_ci
Run Code Online (Sandbox Code Playgroud)

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

0.00
200.00
20.00
100.00
Run Code Online (Sandbox Code Playgroud)

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

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

Dev*_*art 33

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

SELECT guid, number FROM table ORDER BY number * 1 DESC
Run Code Online (Sandbox Code Playgroud)

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


另一种方案 -

...CAST(value as DECIMAL(10,5))
Run Code Online (Sandbox Code Playgroud)

  • 你不能投射到FLOAT.看看CAST函数参考,没有FLOAT类型. (2认同)