I need to order string containing this format
号码。(点)数目。(点)数目。(点)数等多层次因此字符串可以是顺序SQL服务器字符串
1.1。 1.1.1.1.5 或 1.1.1.1.1.1.1.1.1.1.1.1.1.1 ...... 9 或或 5.5.6.7.8.1.2.3454.2.11213
我已经尝试过投射,但我需要的是普通表格表达以外的解决方案,因为它非常慢。
有没有办法订购此类似号码,10是下一个9,而不是1,谢谢
I need to order string containing this format
号码。(点)数目。(点)数目。(点)数等多层次因此字符串可以是顺序SQL服务器字符串
1.1。 1.1.1.1.5 或 1.1.1.1.1.1.1.1.1.1.1.1.1.1 ...... 9 或或 5.5.6.7.8.1.2.3454.2.11213
我已经尝试过投射,但我需要的是普通表格表达以外的解决方案,因为它非常慢。
有没有办法订购此类似号码,10是下一个9,而不是1,谢谢
这工作,有几个假设,其中之一是第一个数字始终是一个int。
insert into @t values ('1.0'),
('10.2.44.2'),
('5.2.523.242'),
('4.23.5511'),
('0.9.4343.1.6.2'),
('99.245.52371.0.1'),
('1.1.1.1.1.1.5'),
('1.1.1.1.1.1.1.1.1.1.1.1.1.1......9'),
('5.5'),
('5.5.6.7.8.1.2.3454.2.11213')
SELECT CAST(SUBSTRING(c, 0, COALESCE(CHARINDEX('.',c, 0), c)) AS INT) AS FirstDigit, c
from @t
order by FirstDigit
结果:
FirstDigit c
0 0.9.4343.1.6.2
1 1.0
1 1.1.1.1.1.1.5
1 1.1.1.1.1.1.1.1.1.1.1.1.1.1......9
4 4.23.5511
5 5.2.523.242
5 5.5
5 5.5.6.7.8.1.2.3454.2.11213
10 10.2.44.2
99 99.245.52371.0.1
不应该“1.1。 1.1.1.1.1.1.1.1.1.1.1.1 ...... 9“1.1.1.1.1.1.5之前”? –
Lynn,我不知道 - 问题中没有足够的信息 - 那些点可能是椭圆或数字的一部分 该值与其他值不同如果多余的“。”字符被删除,它会以正确的顺序出现在列表中 并假设它是零件的数字,那么就需要指导如何对数字进行排序 - 它是在数字之前还是之后出现? –
在字母数字排序方面,我你以为你只想看看同等的位置。在这种情况下,相关文本是“1.1.1.1.1.1.1”与“1.1.1.1.1.1.5”。不确定这是否有其他字符。但是,就像你说的那样,这个问题确实需要更多细节。 –
因此,这些字符串不是“数字”本身,而是更类似于软件版本号? –
每个号码的最大位数是多少? – wdosanjos
你说你已经用CAST试过了CTE;我们可以看到这些代码吗? –