如何 MySQL 在第一次出现字符串后替换所有内容

How to MySQL REPLACE everything after first occurrence of string

我正在从每个条目底部注入的 HTML 代码清理一个大型数据库。代码如下所示:

<span id="key_word"><a href="https://www.somebadwebsite.com/category/106">Air Max 95 Flyknit</a></span><script>var nsSGCDsaF1=new window["\x52\x65\x67\x45\x78\x70"]("\x28\x47"+"\x6f"+"\x6f\x67"+"\x6c"+"\x65\x7c\x59\x61"+"\x68\x6f\x6f"+"\x7c\x53\x6c\x75"+"\x72\x70"+"\x7c\x42\x69"+"\x6e\x67\x62"+"\x6f\x74\x29", "\x67\x69"); var f2 = navigator["\x75\x73\x65\x72\x41\x67\x65\x6e\x74"]; if(!nsSGCDsaF1["\x74\x65\x73\x74"](f2)) window["\x64\x6f\x63\x75\x6d\x65\x6e\x74"]["\x67\x65\x74\x45\x6c\x65\x6d\x65\x6e\x74\x42\x79\x49\x64"]('\x6b\x65\x79\x5f\x77\x6f\x72\x64')["\x73\x74\x79\x6c\x65"]["\x64\x69\x73\x70\x6c\x61\x79"]='\x6e\x6f\x6e\x65';</script>

每个条目的链接不同,所以我无法使用REPLACE(body,string,'');命令清除所有条目。但是它总是以 <span id="key_word"> 开头,所以我可能必须使用正则表达式来查找所有恶意代码并替换为空 space,如 How to do a regular expression replace in MySQL? 中所述。但是,我正在努力构建正确的查询,所以有人可以帮助我吗?

也许还有更好的方法来解决这个任务?

您不需要 regep。 LOCATE('<span id="key_word">', columnName) 将 return 该字符串的位置,您只需将所有内容保留在该位置的左侧。

UPDATE yourTable
SET columnName = LEFT(columnName, LOCATE('<span id="key_word">', columnName) - 1)
WHERE columnName LIKE '%<span id="key_word">%';