MySQL:在字段(正则表达式)中查找所有带有空锚标记的记录并将其删除

时间:2011-08-16 13:54:07

标签: mysql html regex

我有一个包含html代码的列的表。我需要找出其中包含空锚标记的所有记录,忽略子标记。之后我想删除所有那些空标签。

澄清事情 - 应该找到这些锚点,例如:

<a href="http://www.example.com" target="_blank"></a>
<a href="http://www.example.com"> </a>
<a href="http://www.example.com"><span><strong></strong></span></a>
<a href="http://www.example.com"><span></span></a>

虽然找不到这些:

<a href="http://www.example.com">something</a>
<a href="http://www.example.com"><span>some text</span></a>

我设法使用此查询获取所有空锚(如第一个示例中所示):

select * from table_a where html regexp '<a.*href=".*".*></a>'

但是这没有找到第二和第三个例子。有人可以帮忙吗?

更新: 我想从数据库中删除那些空标签。我摆弄了MySQL的UpdateXML,但还没有找到解决方案。

2 个答案:

答案 0 :(得分:1)

我认为最好的方法是使用xml functions从xml文档中提取所需的文本节点。

update table_a 
set html = UpdateXML(html, '//a', '')
where ExtractValue(html, '//a//text()') regexp '^[[:space:]]*$'

注意:如果表格中有一个包含多个a标记的字段,其中有些标记为空,而其他标记为非空,则此字段不会更新。

答案 1 :(得分:0)

最后一个额外的*:

<a.*href=".*".*>.*</a>