mysql将varchar字段作为整数

时间:2009-10-26 14:33:01

标签: mysql sql sql-order-by

我的表中有一个varchar字段,我想对它进行排序。但我需要将此字段作为整数处理。意思是如果排序为文本,顺序是“19,2,20”,但我想得到正确的顺序“2,19,20”。

任何人都可以帮助我吗?

6 个答案:

答案 0 :(得分:51)

我以某种方式无法使用CAST运行查询。我总是得到Error Code: 1064 near "DECIMAL"(或我选择的其他数字类型)。所以,我找到了另一种将varchar排序为数字的方法:

SELECT *
FROM mytable
ORDER BY ABS(mycol)

有点简单,适用于我的情况。

答案 1 :(得分:22)

SELECT  *
FROM    mytable
ORDER BY
        CAST(mycol AS DECIMAL)

答案 2 :(得分:16)

这是解决方案

SELECT * FROM MyTable ORDER BY ABS(MyCol);

答案 3 :(得分:7)

所有其他答案都使用

map.removeLayer(geojson);

,它将值转换为绝对(正)值,假设整数为正数。更好的解决方案是使用map.removeLayer(geojson);

ABS

这可以防止将负数转化为正数。灵感来自:mysql sort string number

答案 4 :(得分:6)

您可以ABS()为此目的。 ABS()是一个返回absolute (positive) value of the specified expression的数学函数。所以查询将是这样的

SELECT * FROM MyTable ORDER BY ABS(MyCol);

答案 5 :(得分:2)

您可以根据所需的

使用此代码订购varchar字段
SELECT * FROM mytable ORDER BY ABS(mycol)