0

我有一个格式为 varchar(11) 的 mysql 列 (staffid)。此列用于存储员工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 列,以便普通员工将其视为整数列作为该列的顺序?

4

1 回答 1

0

正确的语法是,

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

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

SELECT  * 
FROM    `database`
WHERE   staffid NOT LIKE 'cont%' 
ORDER   BY CAST(staffid AS UNSIGNED) ASC
于 2013-04-13T11:35:22.317 回答