gpt4 book ai didi

sql-server - 正确排序 SQL Server 中存储为字符的点数字

转载 作者:行者123 更新时间:2023-12-03 01:24:20 25 4
gpt4 key购买 nike

我有一个存储自定义商品编号的 SQL 表。其中每一个都可以有一个子级,并使用 . 分隔符将其分开。他们每个人都可以有一个 child 。

它可能是什么的一个例子(同样,动态,不知道它会是什么):

Item Number
1
1.1
1.1.1
1.1.1.1
1.1.1.1.a
1.1.1.1.b
10
11
2.1
2.10
2.2
2.20
20
3
30

让这件事变得困难的是这些数字是动态创建的,而不一定是按顺序创建的。您可以创建 5 个数字(1、2、3、4、5),然后创建 1 的子代,这样它就不会按顺序存储在数据库中。

当数据未按该顺序存储时,如何从表中进行选择并按商品编号进行排序,以便如上所述正确显示?

我尝试过的大多数解决方案要么给我 1, 2, 3, 4, 5...1.1, 1.2 或 1, 1.1, 1.1.1, 10, 11...2, 2.1, 20 ....3、30 等

最佳答案

如果您有 SQL 2008,您可以使用新的 Hierarchyid 数据类型:

WITH Items (ItemNumber) AS (
SELECT '1' UNION ALL SELECT '1.1' UNION ALL SELECT '1.1.1'
UNION ALL SELECT '10' UNION ALL SELECT '11' UNION ALL SELECT '2'
UNION ALL SELECT '2.1' UNION ALL SELECT '20' UNION ALL SELECT '3'
UNION ALL SELECT '30'
)
SELECT *
FROM Items
ORDER BY Convert(hierarchyid, '/' + ItemNumber + '/');

关于sql-server - 正确排序 SQL Server 中存储为字符的点数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6446000/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com