数据以数组形式保存的,如何按要求修改数组内容..
我要修改数据库表news字段news_class 里面的内容
news_class字段的数据是数组 形式 "1,2,3,8,9 "
我要把数组元素中的一些数值进行修改了比如:把数据库中有元素的数值是 2 的字段修改为改20
-------------------------------下面是bill024(咖啡熊) 给我的代码
create table test(news_class varchar(20))
insert test select '1,2,3,8,9 '
update test set news_class=stuff(news_class,charindex( ',2, ', ', '+news_class+ ', '),1, '20 ')
select * from test
上面的代码有点错误,如果我想吧20修改为3的话,运行以后是 20就变为30 了
------解决方案--------------------create table test(news_class varchar(20))
insert test select '1,20,3,8,9 '
declare @s varchar(10)
set @s= '20 '
update test set news_class=stuff(news_class,charindex( ', '+@s+ ', ', ', '+news_class+ ', '),len(@s), '3 ')
select * from test
drop table test
------解决方案----------------------- 20 变 30
update test set news_class=stuff(news_class,charindex( ',20, ', ', '+news_class+ ', '),2, '30 ')
select * from test
------解决方案--------------------declare @str varchar(100),@target varchar(20),@replace varchar(20)
--将2替换为20
set @str = '1,2,3,8,9 '
set @target = '2 '
set @replace = '20 '
select replace(@str, ', ' + @target + ', ', ', ' + @replace + ', ')
/*结果
1,20,3,8,9
*/
--将20替换为3
set @str = replace(@str, ', ' + @target + ', ', ', ' + @replace + ', ')
set @target = '20 '
set @replace = '3 '
select replace(@str, ', ' + @target + ', ', ', ' + @replace + ', ')
/*结果
1,3,3,8,9
*/
------解决方案--------------------create table test(news_class varchar(20))
insert test select '1,2,3,8,9 '
declare @target varchar(20),@replace varchar(20)
set @target = '2 ' ---要替换的值
set @replace = '20 ' ---替换的值
update test set news_class=left(stuff(replace( ', '+news_class+ ', ', ', '+@target+ ', ', ', '+@replace+ ', '),1,1, ' '),len(stuff(replace( ', '+news_class+ ', ', ', '+@target+ ', ', ', '+@replace+ ', '),1,1, ' '))-1)
select * from test
drop table test