排序表数据问题

时间:2012-10-17 11:42:37

标签: sql sql-server-2008 sorting

我在数据库表中的数据非常庞大,我想根据它们的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函数可用于对这类数据进行排序?

1 个答案:

答案 0 :(得分:3)

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

这会重新排列varchar数据,以便年份首先出现,并且序列/月/日也会出现。

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