MSSQL 字符段分段更新
程序员文章站
2022-11-23 12:16:28
-->分段更新 -->author:wufeng4552 -->date :2009-10-07 08:13:41 --如:更新'a,a,a,a,a' 第...
-->分段更新
-->author:wufeng4552
-->date :2009-10-07 08:13:41
--如:更新'a,a,a,a,a' 第三段a 為 'test' 結果為'a,a,a,test,a'
declare @s varchar(20)--更新的字符串
declare @split varchar(10)--分割符
declare @splitlen int
declare @pos int --更新的段 如上為第三段
declare @value varchar(10) --更新後的值 'test'
declare @i int,@j int --變量
select @s='a,a,a,a,a',@split=',',@splitlen=len(@split+'a')-2,@i=1,@j=charindex(@split,@s+@split),@pos=3,@value='test'
--循環開始
while @pos>0 and @i<=@j
begin
select @pos=@pos-1,@i=@j+@splitlen+1,@j=charindex(@split,@s+@split,@i)
end
select @s=case when @i<@j then stuff(@s,@i,@j-@i,@value)
when @j>len(@s) then @s+@value
when @i=@j then stuff(@s,@i,0,@value)
else @s end
select @s
/*
--------------------
a,a,a,test,a
(1 個資料列受到影響)
*/
-->author:wufeng4552
-->date :2009-10-07 08:13:41
--如:更新'a,a,a,a,a' 第三段a 為 'test' 結果為'a,a,a,test,a'
declare @s varchar(20)--更新的字符串
declare @split varchar(10)--分割符
declare @splitlen int
declare @pos int --更新的段 如上為第三段
declare @value varchar(10) --更新後的值 'test'
declare @i int,@j int --變量
select @s='a,a,a,a,a',@split=',',@splitlen=len(@split+'a')-2,@i=1,@j=charindex(@split,@s+@split),@pos=3,@value='test'
--循環開始
while @pos>0 and @i<=@j
begin
select @pos=@pos-1,@i=@j+@splitlen+1,@j=charindex(@split,@s+@split,@i)
end
select @s=case when @i<@j then stuff(@s,@i,@j-@i,@value)
when @j>len(@s) then @s+@value
when @i=@j then stuff(@s,@i,0,@value)
else @s end
select @s
/*
--------------------
a,a,a,test,a
(1 個資料列受到影響)
*/