您可以使用SUBSTRING与CHARINDEX,它只是需要更多一点的工作:
declare @s as varchar(25)
set @s = 'vvv.www.xxx.yyy.zzz'
select
left(@s, charindex('.', @s) - 1) as col1,
substring(@s, charindex('.', @s) + 1, charindex('.', @s, charindex('.', @s) + 1) - charindex('.', @s) - 1) as col2,
substring(@s, charindex('.', @s, charindex('.', @s) + 1) + 1, charindex('.', @s, charindex('.', @s, charindex('.', @s) + 1) + 1) - charindex('.', @s, charindex('.', @s) + 1) - 1) as col3,
substring(@s, charindex('.', @s, charindex('.', @s, charindex('.', @s) + 1) + 1) + 1, charindex('.', @s, charindex('.', @s, charindex('.', @s, charindex('.', @s) + 1) + 1) + 1) - charindex('.', @s, charindex('.', @s, charindex('.', @s) + 1) + 1) - 1) as col4,
right(@s, len(@s) - charindex('.', @s, charindex('.', @s, charindex('.', @s, charindex('.', @s) + 1) + 1) + 1)) as col5
你可以清洁我牛逼了一个参加这样的:
declare @s as varchar(25)
set @s = 'vvv.www.xxx.yyy.zzz'
select left(@s, first - 1) as col1,
substring(@s, first + 1, second - first - 1) as col2,
substring(@s, second + 1, third - second - 1) as col3,
substring(@s, third + 1, fourth - third - 1) as col4,
right(@s, len(@s) - fourth)
from (select @s s) a
inner join
(
select charindex('.', @s) as first,
charindex('.', @s, charindex('.', @s) + 1) as second,
charindex('.', @s, charindex('.', @s, charindex('.', @s) + 1) + 1) as third,
charindex('.', @s, charindex('.', @s, charindex('.', @s, charindex('.', @s) + 1) + 1) + 1) as fourth
) b on 1=1
最好的办法是不要保存数据的方式。如果每个块意味着不同的东西,并且希望能够使用这些数据块,则将它们存储在单独的字段中。 – HLGEM