Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 排序表数据问题_Sql_Sql Server 2008_Sorting - Fatal编程技术网

Sql 排序表数据问题

Sql 排序表数据问题,sql,sql-server-2008,sorting,Sql,Sql Server 2008,Sorting,我在数据库表中有大量数据,我想根据它们的ID(主键)对数据进行排序。键列中的数据可以是: 001/2011, 002/2011, 001/2012 当我使用“orderbyid”时,它对行进行如下排序 001/2011, 001/2012, 002/2011 然而,我要找的是 001/2011, 002/2011, 001/2012 id列的数据类型为varchar(50)。是否有一个特殊的SQL函数,我应该使用它对此类数据进行排序 ORDER BY RIGHT(ID,4)+LEFT(ID

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

001/2011,
002/2011,
001/2012
当我使用“
orderbyid
”时,它对行进行如下排序

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数据,以便年在前,年的顺序/月/日在后

如果您的数据有其他格式,请按照同样的思路思考。使用左右移动字符串,其中左侧和右侧仅为两个特定版本

这将重新排列varchar数据,以便年在前,年的顺序/月/日在后


如果您的数据有其他格式,请按照同样的思路思考。使用左右移动字符串,其中左右仅为两个特定版本。

虽然特别挑剔,但我个人还是会将
+
替换为
。和/或检查
/
的位置,以防其移动[+1,因为它仍然工作。]
和/或检查/的位置,以防它移动。
我不会走下螺旋。数据要么像问题中所示的那样连贯,要么我们可以整天盯着水晶球看。它对查询有效,但当我把它放在view@usera中的ORDER BY不起作用。在视图或表函数中,不能强制按排序。这里也可以看到:虽然特别挑剔,但我个人还是会用
替换
+
。和/或检查
/
的位置,以防其移动[+1,因为它仍然工作。]
和/或检查/的位置,以防它移动。
我不会走下螺旋。数据要么像问题中所示的那样连贯,要么我们可以整天盯着水晶球看。它对查询有效,但当我把它放在view@usera中的ORDER BY不起作用。在视图或表函数中,不能强制按排序。请参见此处: