Mysql ORDER BY varchar列存储为数字

时间:2013-04-13 11:34:42

标签: mysql

我有一个mysql列(staffid),其格式为varchar(11)。此列用于存储员工ID,通常为1,2,3 ............ 40,60 ...对于合同工作人员,我不能使用该列的int格式将id存储为cont-1,而对于普通人员,它将id存储为整数1,2,3 ...当我尝试使用带有该列的ORDER BY子句获取数组时,行不会以正确的顺序获取。我的SQL查询是:

SELECT * FROM database ORDER BY CAST('staffid' as UNSIGNED INTEGER) ASC

如何在mysql查询中格式化该varchar列,以便对于常规人员,它按整数列的顺序处理该列?

1 个答案:

答案 0 :(得分:0)

正确的语法是,

SELECT  * 
FROM    `database` 
ORDER   BY CAST(staffid AS UNSIGNED) ASC

因为您已经提到过这种格式cont-1有一些ID。可能你可以添加WHERE子句来过滤特定的ID,

SELECT  * 
FROM    `database`
WHERE   staffid NOT LIKE 'cont%' 
ORDER   BY CAST(staffid AS UNSIGNED) ASC