gpt4 book ai didi

sql - 在 t-Sql 中对 nvarchar 列进行排序

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

我有包含以下数据的 nvarchar 列:

1.0  
10.0
10.1
5.1
6.4
5.3
90.5
39.23
23.2.2
21.2.1
4.3.1

当我将其作为字符串排序时,我得到以下结果:

1.0       
10.0
10.1
21.2.1
23.2.2
39.23
4.3.1
5.1
5.3
6.4
90.5

select * from mytable order by mycolumn

这是错误的,它应该将集合排序为数字,例如:

1.0
1.1
1.2
2.3
2.3.1

等等。

如何正确排序?我将不胜感激任何帮助!

最佳答案

如果您需要按数字排序,您应该最好将数据存储为数字。将零件存储在三列中,然后可以查询ORDER BY n1, n2, n3
您可以添加计算列来返回完整的字符串,例如与公式

=convert(nvarchar(10), n1) + '.' + convert(nvarchar(10), n2) + 
CASE WHEN n3 IS NOT NULL THEN '.' +
convert(nvarchar(10), n3) ELSE '' END

当然,您可以让 dbms 分解字符串并在每个查询中查找并将各个部分转换为数字,但这会“慢”且效率低下。

编辑

正如 Martin Smith 评论中的链接一样,我还不知道 - 你实际上可以直接使用

ORDER BY CONVERT(HIERARCHYID, '/' + myColumn + '/')

关于sql - 在 t-Sql 中对 nvarchar 列进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19196536/

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