日期:2014-05-18  浏览次数:20456 次

急-替换列内容
有一列存的是html代码,这些html代码中有图片标识 <img src="" />,我怎么把这些标识都找出来并替换成''
?
也就是我想把页面中的图片去掉.
开始标识是<img
结束标识是/>

------解决方案--------------------
SQL code


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>
*/

------解决方案--------------------
仅供参考:
SQL code

DECLARE @str VARCHAR(2000)='<html><img src="" /></html>'
SELECT SUBSTRING(@str,0,CHARINDEX('<img',@str))+RIGHT(@str,LEN(@str)-CHARINDEX('/>',@str)-1)

--------------------
(无列名)
<html></html>

------解决方案--------------------
楼主不好意思 上面注释不对,应该是以下
SQL code

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