sql server 2008 去除html标签

由于商品详情数据库的字段是text,存放的是html,但是要求导出的商品详情中只是商品的描述,不要标签,原来打算先把数据导入excel中,然后利用java的正则去替换,结果由于商品详情太大,一个单元格装不下,破坏了单元格的格式,于是放弃了用java程序去除的方法,oracle中提供的有Regex_replace函数,但是sql server 2008中没有,于是想寻找一个有没有类似的方法,上网找了好多信息,结果都是说什么crl,oel,由于我也是个数据库的小菜鸟,不敢动数据库的这些东西,最后就决定自己用一个函数来实现,做得比较绝对,只要是"<"开头,">"结尾,中间所有的都会删除(包括"<",">"),折腾了好久,最后功能实现了,于是做了一个记录(首先说明sql server 2008中text类型是不支持replace函数的,所以要先把text类型转为varchar类型,有些朋友会担心varchar装不下,这个时候就要用varchar(max)类型了,上网搜了一下,这个类型最大可以支持2G的数据),函数如下:

create function [dbo].[dropHtmlTag](@cont varchar(max))
returns varchar(max)
as
begin
declare @tem varchar(max),@i int,@j int;
set @tem = replace(ISNULL(@cont,''),'&nbsp;','');
set @i = charindex('<',@tem,0);
set @j = charindex('>',@tem,1);
  while @i < @j
  begin
    select @tem = replace(@tem,SUBSTRING(@tem,@i,@j-@i+1),'')
    set @i = charindex('<',@tem,0);
    set @j = charindex('>',@tem,1);
  end
return @tem
end

posted @ 2013-09-26 17:19  andysd  阅读(2806)  评论(0编辑  收藏  举报