SQL SERVER 存储过程对字符串的处理
比如:<h2><strong>测<span style="font-family: 幼圆">试</span>复<span style="font-size: small">杂</span>文</strong>本<u>邮</u><big>件</big></h2>
<p>请二位<sub>二</sub></p>
<ul>
<li>24112<sup>3<img alt="" src="http://202.102.126.7/gloa/fckeditor/editor/images/smiley/msn/angel_smile.gif" /></sup></li>
</ul>
希望过滤之后的结果为:试复杂文本邮件请二位241123
多谢了,麻烦高手指教 展开
--如果你的html代码还算规律,下面的办法可以实现,经过测试:
--自己再增加一些需要过滤的字符,如 & bsp; 等
declare @str varchar(4000)--原字符
declare @out varchar(4000)--结果字符
declare @index int--位置
declare @index2 int--位置
set @index=1--初始化
set @out=''--
set @str='<h2><strong>测<span style="font-family: 幼圆">试</span>复<span style="font-size: small">杂</span>文</strong>本<u>邮</u><big>件</big></h2><p>请二位<sub>二</sub></p><ul> <li>24112<sup>3<img alt="" src="http://202.102.126.7/gloa/fckeditor/editor/images/smiley/msn/angel_smile.gif" /></sup></li></ul>'
set @str=replace('>'+@str+'<',' ','')--去掉空格;增加>、<,避免标签不完整
while len(@str)>0 and @index>0
begin
set @index = (select charindex('>',@str))
if(@index>0)
begin
set @str=substring(@str,@index+1,len(@str))
set @index2=(select charindex('<',@str))
set @out=@out+replace(substring(@str,0,@index2),'>','')--去掉多余的 >
end
end
print '结果:'+@out