我有一个包含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,但还没有找到解决方案。
答案 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>