表T中有字段c1。c1的值为:
<Aes> <Cmd> MAReport </Cmd> <Preview> false </Preview </Aes>
<Cmd> </Cmd> 中间的值不固定,可以为任意字符,现在想把所有记录的
<Cmd> </Cmd> 这段改为 <Cmd> 自己定义 </Cmd> 的一个自己固定的字符,请问要是用replace该如何解决,谢谢各位,解决马上结贴
------解决方案--------------------
left(c1,charindex( ' <Cmd> ')-1)+ '自己定义 '+right(c1,len(c1)-charindex( ' </Cmd> ')+1)
------解决方案--------------------
create table T(c1 varchar(100))
insert T select ' <Aes> <Cmd> MAReport </Cmd> <Preview> false </Preview </Aes> '
update T set
c1=stuff(c1, charindex( ' <Cmd> ', c1), charindex( ' </Cmd> ', c1)-charindex( ' <Cmd> ', c1)+6, ' <Cmd> 自己定义 </Cmd> ')
select * from T
--result
c1
----------------------------------------------------------------
<Aes> <Cmd> 自己定义 </Cmd> <Preview> false </Preview </Aes>
(1 row(s) affected)
------解决方案--------------------
declare @a varchar(8000)
set @a = ' <Aes> <Cmd> MAReport </Cmd> <Preview> false </Preview </Aes> '
select left(@a,charindex( ' <Cmd> ',@a) + 4) + '我 ' + right(@a,len(@a)-charindex( ' </Cmd> ',@a) + 1)
------解决方案--------------------
update t1 set c=left(c,charindex( ' <cmd> ',c)+4)+ '要替换的字符串 '+right(c,len(c)-charindex( ' </cmd> ',c)+1)
------解决方案--------------------
如果每一行记录只包含一个 <Cmd> ... </Cmd> :
declare @str1 varchar(100),@str2 varchar(20)
set @str1= ' <Aes> <Cmd> MAReport </Cmd> <Preview> false </Preview> </Aes> '
set @str2= 'testString '
select stuff(@str1,charindex( ' <Cmd> ',@str1)+5,charindex( ' </Cmd> ',@str1)-charindex( ' <Cmd> ',@str1)-5,@str2)
------解决方案--------------------
declare @sql varchar(1000)
set @sql= ' <Cmd> MAReport </Cmd> '
select stuff(@sql,charindex( ' <Cmd> ',@sql)+len( ' <Cmd> '),charindex( ' </Cmd> ',@sql)-(len( ' <Cmd> ')+1), '中国人 ')--这里要替换 ' '的字符
------------------------------
<Cmd> 中国人 </Cmd>
(所影响的行数为 1 行)