另一种方式来做到这一点:
假设你只有A,B,C,D只可能以及数据输出到列分离,并通过做一个顺序,B, c,d(全部desc)并得到前1排
如果您需要缩放到d以上来说e,f,g ...只是改变1,2,3,4,以1,2,3,4,5,6,7等查询
create table t (versionnumber varchar(255))
insert into t values
('1.0.0.505')
,('1.0.0.506')
,('1.0.0.507')
,('1.0.0.508')
,('1.0.0.509')
,('1.0.1.2')
; with cte as
(
select
column1=row_number() over (order by (select NULL)) ,
column2=versionnumber
from t
)
select top 1
CONCAT([1],'.',[2],'.',[3],'.',[4])
from
(
select
t.column1,
split_values=SUBSTRING(t.column2, t1.N, ISNULL(NULLIF(CHARINDEX('.',t.column2,t1.N),0)-t1.N,8000)),
r= row_number