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

SQL-删除字符串中的所有HTML标记

卜飞鸣
2023-03-14
问题内容

在我的数据集中,我有一个字段,用于存储用HTML标记的文本。通用格式如下:

<html><head></head><body><p>My text.</p></body></html>

我可以尝试通过以下方法解决问题:

REPLACE(REPLACE(Table.HtmlData, '<html><head></head><body><p>', ''), '</p></body></html>')

但是,这不是严格的规则,因为 某些条目违反了W3C标准, 并且不包含<head>标签。更糟的是, 可能会缺少结束标记
。因此,我需要REPLACE为每个可能存在的开始和结束标记包括函数。

REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(
    Table.HtmlData,
    '<html>', ''),
    '</html>', ''),
    '<head>', ''),
    '</head>', ''),
    '<body>', ''),
    '</body>', ''),
    '<p>', ''),
    '</p>', '')

我想知道是否有比使用多个嵌套REPLACE函数更好的方法来完成此任务。不幸的是,我在这种环境中只能使用的语言是SQL和Visual
Basic(不是.NET)。


问题答案:
DECLARE @x XML = '<html><head></head><body><p>My text.</p></body></html>'

SELECT t.c.value('.', 'NVARCHAR(MAX)')
FROM @x.nodes('*') t(c)

更新-对于带有未关闭标签的字符串:

DECLARE @x NVARCHAR(MAX) = '<html><head></head><body><p>My text.<br>More text.</p></body></html>'

SELECT x.value('.', 'NVARCHAR(MAX)')
FROM (
    SELECT x = CAST(REPLACE(REPLACE(@x, '>', '/>'), '</', '<') AS XML)
) r


 类似资料:
  • 问题内容: 我想显示数据库条目的前110个字符。到目前为止很简单: 但是上面的条目中包含由客户端输入的html代码。因此它显示: 显然没有好处。 我只想剥离所有html代码,所以我需要从数据库条目中删除<和>之间的所有内容,然后显示前100个字符。 有任何想法吗? 问题答案: 采用

  • 问题内容: 是否有从Java字符串中删除HTML的好方法?一个简单的正则表达式 会起作用,但是不会正确转换,并且两个尖括号之间的非HTML也会被删除(即,正则表达式中的将会消失)。 问题答案: 使用HTML解析器代替正则表达式。对于Jsoup来说,这简直太简单了。 Jsoup还支持对可定制的白名单,如果你希望只允许例如这是非常有用的去除HTML标签,和。

  • 在SQL服务器2008中,从字符串中删除所有空格的最佳方法是什么? <代码> LtrIM(rTimm(‘a b’))< /> >将删除字符串的左、右所有空间,但我还需要删除中间的空间。

  • 问题内容: 是否有从Java字符串中删除HTML的好方法?一个简单的正则表达式 会起作用,但是;不会正确转换,并且两个尖括号之间的非HTML也会被删除(即.,正则表达式中的将会消失)。 问题答案: 如果你是为Android编写的,则可以这样做…

  • 问题内容: 在Go中从某个任意字符串中剥离所有空格的最快方法是什么。 我从字符串包中链接了两个函数: 有人有更好的方法吗? 问题答案: 以下是一些用于从字符串中剥离所有空格字符的不同方法的基准:(源数据): :用途; 随着遇到更多的非空白字符,逐渐增加分配的空间量 :和; 产生大量中间数据 用途; 执行一次分配,但是如果源字符串主要是空格,则可能会总体上分配。 package main_test

  • 问题内容: 例如: 我可以这样做吗? 问题答案: 一个非常简单的实现是: 并继续添加任何其他类型的标点符号。 一种更有效的方法是 编辑:这里有关于效率和其他实现的更多讨论: 在Python中从字符串中删除标点符号的最佳方法