我在数据库表中的数据非常庞大,我想根据它们的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函数可用于对这类数据进行排序?
答案 0 :(得分:3)
ORDER BY RIGHT(ID,4)+LEFT(ID,3)
这会重新排列varchar数据,以便年份首先出现,并且序列/月/日也会出现。
如果您的数据有其他格式,请按同样的思路思考。使用SUBSTRING移动字符串,其中LEFT和RIGHT只有2个特定版本。