【发布时间】:2016-12-16 12:57:44
【问题描述】:
在我的数据集中,我有一个存储用 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)。
【问题讨论】:
-
正如您亲眼所见,对于您所面临的问题,核心 SQL Server 字符串函数充其量是笨拙的,最坏的情况是丑陋的。 IMO 使用 Java 或 .NET 之类的东西可以更轻松地执行此操作,您可以在其中利用 XML 解析器的强大功能。是否有机会使用不同的工具来解决这个问题?
-
嵌套
REPLACE与循环(性能方面)非常相似。我将创建一个二维数组,其中包含一对 HTML 标签,并遍历试图替换标签的字符串。优点是您可以在不更改代码的情况下修改(丰富)数组。 -
我完全同意蒂姆的观点。此外,如果您的 html 中有 ramenk、javascript 或样式块,会发生什么?您会将它们视为内容的一部分,我怀疑这就是您想要的......
-
我很想实现它,但这是进入 SSRS 报告,所以我最好的选择是 Visual Basic...颤抖。至少可以保证不会有 JavaScript 或 CSS。
-
标签: html sql sql-server xml tsql