表中的一个字段是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>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,A,2,B,3,C,4
5,D,6,E,7而我要的是
A,B,C
D,E还有好办法吗?
substring(replace(replace(col , '>' , ','), '<' , ','),3,len(col) - 4)
,A,2,B,3,C,关键是中间的怎么去掉
/*去掉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,' ','')
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
*/