日期:2014-05-18 浏览次数:20660 次
declare @sql varchar(8000)
set @sql='<html>测试<img src="图片1" />字符串<img src="图片2" />替换<img src="图片1" /></html>'
while charindex('<img src="',@sql)<>0
begin
set @sql=replace(@sql,substring(@sql,charindex('<img src="',@sql),charindex('/>',@sql,charindex('<img src="',@sql))-charindex('<img src="',@sql)+2),'')
end
select @sql
/*
<html>测试字符串替换</html>
*/
------解决方案--------------------
仅供参考:
DECLARE @str VARCHAR(2000)='<html><img src="" /></html>'
SELECT SUBSTRING(@str,0,CHARINDEX('<img',@str))+RIGHT(@str,LEN(@str)-CHARINDEX('/>',@str)-1)
--------------------
(无列名)
<html></html>
------解决方案--------------------
楼主不好意思 上面注释不对,应该是以下
declare @va varchar(max)
set @va='dsfdsfdsf<img src="dsfsdfsadfasfafdasffdsd<imagdsfdsf" />ds/>fdsfdsdsfdsfdsf<img src="dsfsfffdfsadfasfafdasfdsfdsf" />ds/>fdsfds';
while(CHARINDEX('<img src="',@va,1)>1) --循环处理字符串
begin
set @va=replace(@va, ---将位置A之后B个的字符的字符串替换成''
SUBSTRING(@va, --获取位置 A之后B个的字符的字符串
CHARINDEX('<img src="',@va,1),--获取<img src="的位置 A
--以下的获取'/>'在<img src=" 之后第一次出现'/>'的位置,然后取得这两个位置之间的字符长度,+2 是为了补齐'/>'这两字符的位置
CHARINDEX('/>',@va,CHARINDEX('<img src="',@va,1))-CHARINDEX('<img src="',@va,1)+2)
,'')
end
select @va