【发布时间】:2014-04-29 21:02:39
【问题描述】:
我是 SQL 新手..
我想对一列进行排序,该列的值将是
示例:D2V2PRT1,D1V2PRT2,D2V1PRT1,D1V1PRT3......
我想要排序输出为
D1V1PRT3,
D1V2PRT2,
D2V1PRT1,
D2V2PRT1,......
所以排序应该是这样的,首先它会对 D 值排序,然后对 V 值排序,然后对 PRT 值排序,所有值都在字符串中。
我已经编写了一些逻辑并且能够将值从 D V 和 PRT 中分离出来,所以现在我的问题是如何按顺序指定它
提前致谢
【问题讨论】:
-
数字可以超过
9吗?此外,发布分隔 D V PRT 值的逻辑。 -
不,所有都将按 Asc 排序,是的,那些没有的没有限制
-
@Andomar 用于在 D CAST(substring(PRT.DisplayID,(CHARINDEX('D',PRT.DisplayID)+1),(CHARINDEX('V',PRT.DisplayID)- (CHARINDEX('D',PRT.DisplayID)+1))) 作为数字)逻辑使用 ,, 对于 V 值 CAST(substring(PRT.DisplayID,(CHARINDEX('V',PRT.DisplayID)+1), (CHARINDEX('PRT',PRT.DisplayID)-CHARINDEX('V',PRT.DisplayID)-1)) as numeric) asc 和 PRT CAST(substring(PRT.DisplayID,(CHARINDEX('PRT',PRT. DisplayID)+3),len(PRT.DisplayID)) as numeric) asc 使用上述逻辑可以得到 nos
标签: sql sql-server sql-server-2008 sorting