I need to order string containing this format
数字。(点)数。(点)数。(点)数等多个级别所以字符串可以
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,谢谢
答案 0 :(得分:0)
这有一些假设,一个是第一个数字总是一个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