我在SQL Server2005中有包含HTML标记的数据,我想将所有内容都剥离掉,只在标记之间保留文本。理想的情况下也更换喜欢的东西<带<等
<
<
有没有简单的方法可以做到这一点,或者有人已经获得了一些示例T-SQL代码?
我没有添加扩展存储的proc之类的功能,因此更喜欢纯T-SQL方法(最好是一种与SQL 2000向后兼容的方法)。
我只想使用剥离的HTML来检索数据,而不是对其进行更新,因此理想情况下,它将被编写为用户定义的函数,以使其易于重用。
因此,例如,将其转换为:
<B>Some useful text</B> <A onclick="return openInfo(this)" href="http://there.com/3ce984e88d0531bac5349" target=globalhelp> <IMG title="Source Description" height=15 alt="Source Description" src="/ri/new_info.gif" width=15 align=top border=0> </A>> <b>more text</b></TD></TR>
对此:
Some useful text > more text
有一个UDF将执行此处描述的操作:
用户定义的功能以剥离HTML
CREATE FUNCTION [dbo].[udf_StripHTML] (@HTMLText VARCHAR(MAX)) RETURNS VARCHAR(MAX) AS BEGIN DECLARE @Start INT DECLARE @End INT DECLARE @Length INT SET @Start = CHARINDEX('<',@HTMLText) SET @End = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText)) SET @Length = (@End - @Start) + 1 WHILE @Start > 0 AND @End > 0 AND @Length > 0 BEGIN SET @HTMLText = STUFF(@HTMLText,@Start,@Length,'') SET @Start = CHARINDEX('<',@HTMLText) SET @End = CHARINDEX('>',@HTMLText,CHARINDEX('<',@HTMLText)) SET @Length = (@End - @Start) + 1 END RETURN LTRIM(RTRIM(@HTMLText)) END GO
编辑:请注意,这是针对SQL Server 2005的,但是如果将关键字MAX更改为4000,则它也将在SQL Server 2000中工作。