当前位置: 首页 > 面试题库 >

如何从SQL Server中的字符串中剥离HTML标记?

葛宏爽
2023-03-14
问题内容

我在SQL Server2005中有包含HTML标记的数据,我想将所有内容都剥离掉,只在标记之间保留文本。理想的情况下也更换喜欢的东西&lt;<

有没有简单的方法可以做到这一点,或者有人已经获得了一些示例T-SQL代码?

我没有添加扩展存储的proc之类的功能,因此更喜欢纯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

问题答案:

有一个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中工作。



 类似资料:
  • 问题内容: 如何从字符串中删除HTML标签,以便可以输出纯文本? 问题答案: 嗯,我尝试了您的功能,并在一个小例子上工作了: 你能举一个例子吗? Swift 4和5版本:

  • 问题内容: 如何从JavaScript中的字符串中剥离HTML? 问题答案: 使用浏览器的解析器可能是当前浏览器中最好的选择。以下将起作用,但有以下警告: 您的HTML在一个元素内有效。HTML包含在或或标签无效内的,因此可能无法正确解析。 (DOM标准属性)和(非标准)属性不相同。例如,将在元素内包含文本,而在元素内则不(在大多数浏览器中)。这只会影响IE <= 8,这是唯一不支持的主要浏览器。

  • 问题内容: 当在HTML文件中打印一行时,我试图找到一种仅显示每个HTML元素的内容而不显示格式本身的方法。如果找到,它将仅打印“某些文本”,打印“ hello”,等等。如何去做呢? 问题答案: 我一直使用此函数来剥离HTML标记,因为它仅需要Python stdlib: 对于Python 3: 对于Python 2:

  • 问题内容: 我需要从字符串中删除一个特定的单词。 但我发现python strip方法似乎无法识别有序单词。只需删除传递给参数的所有字符。 例如: 如何使用python剥离指定的单词? 问题答案: 使用。 或者使用和使用正则表达式。这将允许删除前导/尾随空格。

  • 问题内容: 考虑一个非DOM场景,您想使用JavaScript / ECMAScript从字符串中删除所有非数字字符。范围内的任何字符都应保留。 您将如何用纯JavaScript实现此目标?请记住,这是一个非DOM方案,因此jQuery和其他涉及浏览器和按键事件的解决方案都不适合。 问题答案: 使用正则表达式为的字符串方法,这是与所有非数字匹配的速记字符类:

  • 问题内容: 我过去跑步 在Perl上摆脱不可打印的字符。 在Python中,没有POSIX正则表达式类,因此我无法编写[:print:]来表示我想要的含义。我不知道在Python中无法检测字符是否可打印。 你会怎么做? 编辑:它也必须支持Unicode字符。string.printable方式会很乐意将它们从输出中剥离。curses.ascii.isprint将为任何unicode字符返回fals