日期:2014-05-18 浏览次数:20513 次
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