sql-server - 对数据库中的项目符号进行排序

标签 sql-server sql-server-2008

我有专栏[datatype:varchar(50)]在数据库(SQL Server 2008)中具有如下所示的值:

1
2
1.1.11
4.1
5
2.1
1.1
4
1.2.1
4.2.2
4.3
4.2
4.3.1
4.2.1
11.2
1.2.4
4.4

这些是我记录的编号项目符号
我需要将它们按顺序对所有记录进行分组 1,1.1,1.1.1,2,3.1,4,10.1,11.1....
请在这方面帮助我。

最佳答案

WITH T(YourColumn) AS
(
SELECT '1' UNION ALL
SELECT '2' UNION ALL
SELECT '1.1.11' UNION ALL
SELECT '4.1' UNION ALL
SELECT '5' UNION ALL
SELECT '2.1' UNION ALL
SELECT '1.1' UNION ALL
SELECT '4' UNION ALL
SELECT '1.2.1' UNION ALL
SELECT '4.2.2' UNION ALL
SELECT '4.3' UNION ALL
SELECT '4.2' UNION ALL
SELECT '4.3.1' UNION ALL
SELECT '4.2.1' UNION ALL
SELECT '11.2' UNION ALL
SELECT '1.2.4' UNION ALL
SELECT '4.4'
)
SELECT *
FROM T 
ORDER BY CAST('/' + YourColumn + '/' AS HIERARCHYID)

退货
YourColumn
----------
1
1.1
1.1.11
1.2.1
1.2.4
2
2.1
4
4.1
4.2
4.2.1
4.2.2
4.3
4.3.1
4.4
5
11.2

那是你需要的吗?

关于sql-server - 对数据库中的项目符号进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12406985/

相关文章:

sql-server - 使用 EF Core 插入 SQL Server 时出现事务死锁

sql-server - 定义外键有什么好处

c# - 在本地机器上设置数据库备份文件

asp.net - 为 Sitecore 配置故障转移合作伙伴

c# - 事务必须在 SQL Server 的存储过程中吗?

c# - 使用 SMO 在 SQL Server Express 中创建数据库

sql - 将结构化 XML 文件导入 SQL 表

sql-server - SSIS 包创建 Hresult : 0x80004005 Description: "Login timeout expired" error

node.js - NodeJS - Sequelize - 存储过程 - 不起作用

python - 在单元测试中使用 pyodbc