表中的一个字段是varchar类型的,现在要将字段的值
形如
<1>A<2>B<3>C<4>
<5>D<6>E<7>替换成
A,B,C
D,E的形式,要求还保存在原来的字段中,原来的行中.其中<1> <2> <3> <4> <5> <6> <7>分别代表不同内容的html代码段.
最好不用游标.

解决方案 »

  1.   

    substring(replace(replace(col , '>' , ','), '<' , ','),2,len(col) - 2)
      

  2.   

    dawugui 的语句查询出来是
    1,A,2,B,3,C,4
    5,D,6,E,7而我要的是
    A,B,C
    D,E还有好办法吗?
      

  3.   


    substring(replace(replace(col , '>' , ','), '<' , ','),3,len(col) - 4)
      

  4.   

    现在查询出来是
    ,A,2,B,3,C,关键是中间的怎么去掉
      

  5.   


    /*去掉html代码*/
    create function [dbo].[clearhtml] (@maco varchar(8000))
    returns varchar(8000) as begin
    declare @i int
    while 1 = 1 
        begin
    set @i=len(@maco)
    set @maco=replace(@maco, substring(@maco,charindex('<',@maco),
    charindex('>',@maco)-charindex('<',@maco)+1),space(0))
    if @i=len( @maco ) 
    break 
        end set @maco=replace(@maco,' ','')
    set @maco=replace(@maco,'&nbsp;','')
    set @maco=ltrim(rtrim(@maco))
    set @maco=replace(@maco,char(9),'')
    set @maco=replace(@maco,char(10),'')
    set @maco=replace(@maco,char(13),'') return (@maco)
    END
    go
    declare @table table (col varchar(15))
    insert into @table
    select '<1>A<2>B<3>C<4>' union all
    select '<5>D<6>E<7>'select [dbo].[clearhtml](col) AS col from @table
    /*
    col
    --------
    ABC
    DE
    */