我在数据库表中有相当大的数据,我想根据它们的 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 函数对此类数据进行排序吗?
我在数据库表中有相当大的数据,我想根据它们的 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 函数对此类数据进行排序吗?
ORDER BY RIGHT(ID,4)+LEFT(ID,3)
这会重新排列 varchar 数据,以便首先出现年份,然后是序列/月份/日期。
如果您的数据有其他格式,请按照相同的思路进行思考。使用SUBSTRING移动字符串,其中 LEFT 和 RIGHT 只是 2 个特定版本。