Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.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 server MS SQL SERVER 2012中的自然排序_Sql Server_Sorting_Sql Server 2012 - Fatal编程技术网

Sql server MS SQL SERVER 2012中的自然排序

Sql server MS SQL SERVER 2012中的自然排序,sql-server,sorting,sql-server-2012,Sql Server,Sorting,Sql Server 2012,我需要有关SQL Server 2012中自然排序的帮助。我有一个varchar列,其值为: PAZ/01/03/2014 ... PAZ/233/03/2014 PAZ/01/04/2014 .... PAZ 10/04/2014 ... PAZ/100/04/2014 其中PAZ是静态字符串,/之后的第二部分是lp编号,从每个月的01开始-第三部分,最后一部分是一年 例如,当我按此列排序时,我收到 PAZ/01/04/2014 PAZ/02/04/2014 ... PAZ 10/04/20

我需要有关SQL Server 2012中自然排序的帮助。我有一个varchar列,其值为:

PAZ/01/03/2014
...
PAZ/233/03/2014
PAZ/01/04/2014
....
PAZ 10/04/2014
...
PAZ/100/04/2014
其中PAZ是静态字符串,/之后的第二部分是lp编号,从每个月的01开始-第三部分,最后一部分是一年

例如,当我按此列排序时,我收到

PAZ/01/04/2014
PAZ/02/04/2014
...
PAZ 10/04/2014
PAZ 02/04/2014
但我需要在每个月按lp进行自然排序

PAZ/01/03/2014
...
PAZ233/03/2014
PAZ/01/04/2014
PAZ/02/04/2014
...
PAZ/10/04/2014
...
PAZ/300/04/2014
PAZ/01/05/2014
...
PAZ/500/05/2014
etc

如果我是在你的情况下,我会创建新的列,并插入ip字符串中的日期部分,即

COLUMN 1               Column 2 
PAZ/01/03/2014          03/2014
PAZ/233/03/2014         03/2014
PAZ/01/04/2014          04/2014
PAZ/02/04/2014          04/2014
然后按第2列和第1列对结果排序


另外,您可以使用patindex剪切ip字符串并创建新列

这仍然会在2014年3月12日之前对PAZ/101/03进行排序,因此创建第三列,仅包含ip部分和按列排序2、3、1如果排序、查询等需要此列的组成部分,它倾向于指出这样一个事实,即组件应该存储在单独的列中。然后这个varchar可以由一个计算列来构造。