为了账号安全,请及时绑定邮箱和手机立即绑定

从sql server中的字符串中删除html标签的最佳方法?

从sql server中的字符串中删除html标签的最佳方法?

MMMHUHU 2019-07-31 18:34:56
从sql server中的字符串中删除html标签的最佳方法?我在SQL Server 2005中有包含html标签的数据,我想将所有内容删除,只留下标签之间的文本。理想的情况下也更换喜欢的东西&lt;带<等有没有一种简单的方法可以做到这一点,或者有人已经有一些示例t-sql代码?我没有能力添加扩展存储过程等,所以更喜欢纯t-sql方法(最好是一个向后兼容sql 2000)。我只想用剥离的html检索数据,而不是更新它,所以理想情况下它会被写成用户定义的函数,以便于重用。所以例如转换这个:<B>Some useful text</B>&nbsp;<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>&gt;&nbsp;<b>more text</b></TD></TR>对此:Some useful text > more text
查看完整描述

3 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

有一个UDF将执行此处描述的操作:

剥离HTML的用户定义函数

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中使用。


查看完整回答
反对 回复 2019-07-31
?
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')


查看完整回答
反对 回复 2019-07-31
  • 3 回答
  • 0 关注
  • 1102 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信