0

我在数据库表中有相当大的数据,我想根据它们的 ID(主键)对数据进行排序。键列中的数据可能是:

001/2011,
002/2011,
001/2012

当我使用 ' order by id' 时,它会像这样对行进行排序

001/2011,
001/2012,
002/2011

但是,我正在寻找的是

001/2011,
002/2011,
001/2012

id 列的数据类型是varchar(50). 我应该使用特殊的 SQL 函数对此类数据进行排序吗?

4

1 回答 1

3
ORDER BY RIGHT(ID,4)+LEFT(ID,3)

这会重新排列 varchar 数据,以便首先出现年份,然后是序列/月份/日期。

如果您的数据有其他格式,请按照相同的思路进行思考。使用SUBSTRING移动字符串,其中 LEFT 和 RIGHT 只是 2 个特定版本。

于 2012-10-17T11:44:17.593 回答