【问题标题】:How to MySQL REPLACE everything after first occurrence of stringMySQL如何在第一次出现字符串后替换所有内容
【发布时间】:2020-05-02 18:30:12
【问题描述】:

我正在从每个条目底部注入的 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,''); 命令来清除所有条目。但是它总是以&lt;span id="key_word"&gt; 开头,所以我可能不得不使用正则表达式来查找所有恶意代码并替换为How to do a regular expression replace in MySQL? 中解释的空白空间。但是,我正在努力构建正确的查询,所以有人可以帮助我吗?

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

【问题讨论】:

    标签: mysql select regexp-replace


    【解决方案1】:

    您不需要正则表达式。 LOCATE('&lt;span id="key_word"&gt;', columnName) 将返回该字符串的位置,您只需将所有内容保留在该位置的左侧即可。

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

    【讨论】:

    • 不幸的是,它删除了每个条目的整个文本。
    • 我忘了LOCATE() 在找不到字符串时会返回0。所以我们需要一个WHERE 子句来确保它只处理注入代码的行。
    • 感谢您的更新。但是,启动以下代码:UPDATE field_data_body SET body_value = LEFT(body_value, LOCATE(body_value, '&lt;span id="key_word"&gt;') - 1) WHERE body_value LIKE '%&lt;span id="key_word" 返回 0 行受影响。
    • 那么&lt;span id="key_word"&gt; 实际上不在这些行中。真的是文字字符串“key_word”吗?
    • 是的,它是文字字符串。不幸的是,执行UPDATE field_data_body SET body_value = LEFT(body_value, LOCATE(body_value, '&lt;span id="key_word"&gt;') - 1) WHERE body_value LIKE '%&lt;span id="key_word"%' 已清空所有条目。
    猜你喜欢
    • 2021-12-20
    • 1970-01-01
    • 2021-12-05
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    相关资源
    最近更新 更多