我有一个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列,以便对于常规人员,它按整数列的顺序处理该列?
答案 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