我有一个包含varchar数据类型列的表.它中的数据类似于8.1,8.2,8.3,8.1.1,8.3.1,8.10,8.12,8.1.2等.我想订购这些数据,如
8.1
8.1.1
8.1.2
8.2
8.3
8.3.1
8.10
8.12.
Run Code Online (Sandbox Code Playgroud)
我已经尝试过以下方法:
SELECT LEN(COL)AS SORT,COL FROM #TEMP ORDER BY LEN(COL),COL
Run Code Online (Sandbox Code Playgroud)
这给了我喜欢的外观
8.1
8.2
8.3
8.10
8.12
8.1.1
8.1.2
8.3.1
Run Code Online (Sandbox Code Playgroud)
非常感谢帮助!
表示的值类似于 Hierarchy.因此,首先将值转换为层次结构,然后执行排序操作
SELECT LEN(COL)AS SORT,COL FROM #TEMP
Order by convert(hierarchyID,'/' + [Col] + '/')
Run Code Online (Sandbox Code Playgroud)
在层次结构中,每个级别的区别/基本上将父级与子级别分开