您可以使用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