set @a='-1,-1,-1,-1,-1,-1,-1,-1,-1,-1';
set @b=2;
b=2的意思是第2个-1要变为"11"
MYSQL中:
set @a='-1,-1,-1,-1,-1,-1,-1,-1,-1,-1';
set @b=2;
select concat(concat(mid(@a,1,3(@b-1)),
replace(mid(@a,3(@b-1)+1,2),"-1","11")),
mid(@a,3*@b,length(@a)-3(@b-1)-2));MSSQL中如何写?
--可以这么写,@b在1和10之间时,不会出错
declare @a varchar(50), @b int
set @a='-1,-1,-1,-1,-1,-1,-1,-1,-1,-1';
set @b=10;
select substring(@a,1,(@b-1)*3)+'11,'+substring(@a,@b*3+1,8000)记得结贴哦
set @b=2;
set @c = '11'declare @x xml;SET @x = (select convert(xml,'<v>'+replace(@a,',','</v><v>')+'</v>'));set @x.modify('replace value of (/v[position()=sql:variable("@b")]/text())[1] with sql:variable("@c")')select
stuff((select ','+t.x.value('.','varchar(10)') as [text()]
from @x.nodes('//v') as t(x)
for xml path('')),1,1,'')
SET @A='-1,-1,-1,-1,-1,-1,-1,-1,-1,-1'
SET @B=3
SELECT STUFF(@A,3*@B-2,3*@B-1,'11')
SET @A='-1,-1,-1,-1,-1,-1,-1,-1,-1,-1'
SET @B=6
SELECT STUFF(@A,3*@B-2,2,'11')
有点小问题 不好意思 这会对了