当一个字段中存储有带有html标签的字符串,而我们想获取的是该字符的纯文本时应该怎么处理,其中一个实现方法就是创建一个去html的函数,当需要时直接调用即可。
自定义函数如下:
create function ClearHtml (@input_str varchar(8000))
returns varchar(8000)
as
begin
declare @randchar_one nvarchar(200)
declare @randchar_two nvarchar(200)
if(charindex('<<',@input_str)>0)
begin
set @randchar_one='D4678B36-B958-4274-B81E-BBA636CFB427'
set @randchar_two='49E374CC-9E1A-4850-897C-27074DE32E7F'
set @input_str=replace(@input_str,'<<',@randchar_one)
set @input_str=replace(@input_str,'>>',@randchar_two)
end
declare @i int
while 1 = 1
begin
set @i=len(@input_str)
if charindex('>',@input_str)-charindex('<',@input_str)>-1
set @input_str=replace(@input_str, substring(@input_str,charindex('<',@input_str),
charindex('>',@input_str)-charindex('<',@input_str)+1),space(0))
if @i=len(@input_str)
break
end
set @input_str=replace(@input_str,' ','')
set @input_str=replace(@input_str,' ','')
set @input_str=ltrim(rtrim(@input_str))
set @input_str=replace(@input_str,char(9),'')
set @input_str=replace(@input_str,char(10),'')
set @input_str=replace(@input_str,char(13),'')
if(charindex(@randchar_one,@input_str)>0)
begin
set @input_str=replace(@input_str,'D4678B36-B958-4274-B81E-BBA636CFB427','<<')
set @input_str=replace(@input_str,'49E374CC-9E1A-4850-897C-27074DE32E7F','>>')
end
return (@input_str)
end
go
创建函数之后,调用方法如下:
select dbo.ClearHtml('<a href="www.baidu.com">一叶蓝馨的博客</a>--<p><font color="red">SQL字符串去除HTML标签</font></p>')
运行结果:
一叶蓝馨的博客--SQL去除字符串中HTML标签