我的表中有一个varchar字段,我想对它进行排序。但我需要处理这个字段为整数。意思是如果排序为文本,顺序是“19,2,20”,但我想要得到正确的顺序“2,19,20”。mysql order varchar field as integer
任何人都可以帮助我吗?
我的表中有一个varchar字段,我想对它进行排序。但我需要处理这个字段为整数。意思是如果排序为文本,顺序是“19,2,20”,但我想要得到正确的顺序“2,19,20”。mysql order varchar field as integer
任何人都可以帮助我吗?
SELECT *
FROM mytable
ORDER BY
CAST(mycol AS DECIMAL)
我以某种方式没有设法运行查询CAST
。我总是得到Error Code: 1064 near "DECIMAL"
(或我选择的其他数字类型)。于是,我找到了另一种方式来排序varchar
的数字:
SELECT *
FROM mytable
ORDER BY ABS(mycol)
简单一点,在我的情况下工作。
可使用此代码根据订购varchar字段你需要
SELECT * FROM mytable ORDER BY ABS(mycol)
下面是解
SELECT * FROM MyTable ORDER BY ABS(MyCol);
您可以ABS()
用于这一目的。 ABS()是一个数学函数,返回absolute (positive) value of the specified expression
。所以查询将是这样的
SELECT * FROM MyTable ORDER BY ABS(MyCol);
所有其他的答案使用ABS
,其值转换成绝对(正)值,假设整数是积极的。一个更好的解决办法是使用* 1
:
SELECT * FROM mytable ORDER BY mycol * 1
这防止铸造负数为积极因素。启发:mysql sort string number
感谢Quassnoi – ntan 2009-10-26 14:35:34
@Quassnoi:只是想知道,但比ORDER BY mycol是铸造更高效+ 0 – dnagirl 2009-10-26 14:40:09
不错的主意我试驾它 – ntan 2009-10-26 14:42:26