【问题标题】:Sort Bullets in Database排序数据库中的项目符号
【发布时间】:2012-09-13 13:06:16
【问题描述】:

我在数据库 (SQL Server 2008) 中有一个列 [datatype:varchar(50)],其值如下所示:

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....

请在这方面帮助我。

【问题讨论】:

  • order by column_name 呢?
  • ORDER BY CAST('/' + YourColumn + '/' AS HIERARCHYID) 能满足你的需要吗?
  • AFAIK 在您的列上执行order by 将按“法律”标题类型升序对它们进行排序。您还需要将所有值连接成一个字符串吗?
  • @nonnb - 这会将11.2 放在2 之前

标签: sql-server sql-server-2008


【解决方案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

这是你需要的吗?

【讨论】:

  • 是的.. 非常感谢.. 这正是我需要的.. 非常非常有帮助
猜你喜欢
  • 2012-01-24
  • 2013-02-25
  • 2017-10-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多