【发布时间】:2014-06-03 15:42:53
【问题描述】:
假设我有下表:
CREATE TABLE test (
head NVARCHAR(100),
body NTEXT
)
在这个表中,我想找到 body 列包含 HTML 标记的所有行。任何 HTML 标记,但解决方案不应遗漏任何内容。换句话说,更多的假阳性比更多的假阴性更好。
谁能帮我想出一个可行的解决方案?如果这是代码,我会使用 HTML 解析器或正则表达式来代替。但是我在 SQL Server 中没有开箱即用的正则表达式功能(理想情况下,这将与 2005 及更高版本兼容,但与 2008 及更高版本兼容也可以)。
任何帮助将不胜感激。
另外,上面是NTEXT。如果上表的BODY 列的类型是NVARCHAR(MAX),您的答案会改变吗?
谢谢!
【问题讨论】:
-
为什么不直接搜索
/>?这是一组非常独特的 HTML 字符,而且速度会很快。 -
那么为什么不直接
select ... where body like '%<%'?由于误报是可以的,因此您是否找到具有a < b的记录并不重要,v.s.<html> -
你说的很对,这就是我倾向于的解决方案。只是想知道是否有人想出了更优雅的东西
-
使用
NVARCHAR(MAX)而不是已弃用的NTEXT将允许您在该列上使用所有常规字符串函数。处理NTEXT列不太舒服.... -
我听到了@marc_s 这就是我特别提到数据类型的原因。不幸的是,我可能要处理很多遗留表,有些是 NVARCHAR,有些是 NTEXT
标签: html sql sql-server