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

解决方案 »

  1.   

    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),'')
    endselect @sql/*
    <html>测试字符串替换</html>
    */
      

  2.   

    仅供参考:DECLARE @str VARCHAR(2000)='<html><img src="" /></html>'
    SELECT SUBSTRING(@str,0,CHARINDEX('<img',@str))+RIGHT(@str,LEN(@str)-CHARINDEX('/>',@str)-1)--------------------
    (无列名)
    <html></html>
      

  3.   

    楼主看看是不是能行……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 是为了补齐'/>'这两字符的位置 B
    CHARINDEX('/>',@va,CHARINDEX('<img src="',@va,1))-CHARINDEX('<img src="',@va,1)+2)
    ,'')end
    select @va
      

  4.   

    楼主不好意思 上面注释不对,应该是以下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