从sql server中的字符串中删除html标签的最佳方法?我在SQL Server 2005中有包含html标签的数据,我想将所有内容删除,只留下标签之间的文本。理想的情况下也更换喜欢的东西<带<等有没有一种简单的方法可以做到这一点,或者有人已经有一些示例t-sql代码?我没有能力添加扩展存储过程等,所以更喜欢纯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
3 回答
qq_花开花谢_0
TA贡献1835条经验 获得超7个赞
有一个UDF将执行此处描述的操作:
CREATE FUNCTION [dbo].[udf_StripHTML] (@HTMLText VARCHAR(MAX))RETURNS VARCHAR(MAX) ASBEGIN 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))ENDGO
编辑:请注意这是针对SQL Server 2005的,但是如果将关键字MAX更改为类似4000,它也可以在SQL Server 2000中使用。
PIPIONE
TA贡献1829条经验 获得超9个赞
如果您的HTML格式正确,我认为这是一个更好的解决方案:
create function dbo.StripHTML( @text varchar(max) ) returns varchar(max) asbegin declare @textXML xml declare @result varchar(max) set @textXML = REPLACE( @text, '&', '' ); with doc(contents) as ( select chunks.chunk.query('.') from @textXML.nodes('/') as chunks(chunk) ) select @result = contents.value('.', 'varchar(max)') from doc return @resultendgoselect dbo.StripHTML('This <i>is</i> an <b>html</b> test')
添加回答
举报
0/150
提交
取消