使用numbers表,你可以做到这一点,你所要做的就是创建一个数字表..
declare @string varchar(max)
set @string='_'+'XYZ_3244H_V65_C005_Z1234567455_P_F_20160127_0137.txt'+'_'
select
substring (@string,n+1,charindex('_',@string,n+1)-n-1)
from numbers
where
substring(@string,n,1)='_'
and n<len(@string)
你也可以使用ROWNUMBER像下面的任何地方选择值..
select
substring (@string,n+1,charindex('_',@string,n+1)-n-1),row_number() over (order by charindex('_',@string,n+1)) as rn
from numbers
where
substring(@string,n,1)='_'
and n<len(@string)
然后用一个CTE来获得一些在任何地方像
;with cte
as
(
select
substring (@string,n+1,charindex('_',@string,n+1)-n-1) as splitstrig,row_number() over (order by charindex('_',@string,n+1)) as rn
from numbers
where
substring(@string,n,1)='_'
and n<len(@string)
)
select * from cte where rn=5
可能重复http://stackoverflow.com/questions/2647/how-do-i-split-a-string -so-i-can-access-item-x –
那么,有没有任何答案对你有帮助? – gofr1