MySQL按顺序排序和铸造顺序错误

时间:2017-01-17 20:37:22

标签: mysql

我有一个混合值的简单表。对于这个例子,假设我有3个字段:key,value和is_number。键是任何键,值是任何值,如果value是数字,则is_number是1,如果是字符串,则is_number是0。值具有类型字符串。

现在我需要按值排序,我尝试执行以下操作:

SELECT *
FROM table
ORDER BY IF(is_number, CAST(value AS DECIMAL(20,10)), value)

但是即使is_number对于所有行都是1,它仍然按字符串值排序,而不是按照转换的整数值排序。

所以我得到一个类似103,111,54的订单,而不是如果应该给出这个54,103,111的整数值

如果我删除IF并且只保留CAST(值为DEC DECALAL(20,10)它可以工作吗?

任何人都可以看到我做错了什么?

0 个答案:

没有答案