【发布时间】:2019-05-17 13:14:52
【问题描述】:
有一张桌子Article。我想像这样对数据进行排序。
检查记录4.2.1。
感谢四位的建议和帮助。
我想对这些数据进行排序:
ArticleCode
------------
1
1.1
1.2
1.3
2
3
3.1
3.2
3.3
3.4
3.5
4
4.1
4.1.1
4.1.2
4.1.3
4.2
4.2.1
4.2.2
4.2.3
4.2.4
4.2.5
4.2.6
4.2.7
4.2.8
4.2.9
4.2.10
4.2.11
4.2.12
我的选择查询:
select ArticleCode
from Article
order by ArticleCode
查询结果:
1
1.1
1.2
1.3
2
3
3.1
3.2
3.3
3.4
3.5
4
4.1
4.1.1
4.1.2
4.1.3
4.2
4.2.1
4.2.10
4.2.11
4.2.12
4.2.2
4.2.3
4.2.4
4.2.5
4.2.6
4.2.7
4.2.8
4.2.9
【问题讨论】:
-
这是因为您正在对连接的字符串进行排序,而您希望对每个元素进行排序。最好的解决方案是正确规范化这些数据并将这些数据分成三列。这里的数据结构违反了 1NF,将多个数据点塞入单个列中。您是否能够更改数据结构,或者您被卡住并且必须对其进行排序?
-
补充@SeanLange 所说的,这也不是SQL Server 独有的。如果你把它作为 TEXT 放在 Excel 中,你会得到相同的字符串排序顺序。这与字母 A 之前的字母 a 没有什么不同。
-
结构不能应用于三列,因为它是动态的。深度可以是无限的。
-
有没有办法对这类数据进行排序。
标签: sql sql-server sorting nested sql-order-by