命令sql server字符串像数字

时间:2014-01-20 19:46:36

标签: sql sql-server

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,谢谢

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