如何在SQL列中删除HTML标记

时间:2019-01-09 06:25:11

标签: sql mariadb

我想从post_content sql列中删除h1标记和它们之间的文本。

我尝试过这样的事情:

DELETE FROM wpbz_posts
WHERE `post_content` like '<h1>%</h1>';

但是不知道如何在标签之间使用文本,因为每个文本行都不相同。

有任何提示或帮助吗?谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用REGEXP_REPLACE进行更新,以剥离“ h1”标签及其中的内容

UPDATE wpbz_posts 
SET post_content = REGEXP_REPLACE(post_content,'<h1>.*?</h1>','') 
WHERE post_content LIKE '%</h1>%'

?中的.*?使其成为惰性搜索,因此仅匹配到</h1>之后的第一个<h1>为止。

db <>小提琴here

上进行测试

还有一个UPDATEXML函数,但是该函数仅替换出现1个标签。
如果字符串不包含有效的XML,则会引发“错误的XML值”错误。

UPDATE wpbz_posts 
SET post_content = UpdateXML(post_content,'//h1[1]','') 
WHERE post_content LIKE '%</h1>%'