使用 phpMyAdmin 查找 https:\/\/ 并替换为 http:\/\/

Find https:\/\/ and replace with http:\/\/ using phpMyAdmin

我在 phpmyadmin 中遇到 find/replace 失败的问题。我认为这一定与转义数据库中 URL 中的斜杠的反斜杠有关,而我没有正确说明或转义查询中的反斜杠。

数据在wpiv_postmetatable的meta_value列中是这样存储的,URL中的斜杠转义了:

(more data)   [{"ddl-repeat-id":"4","logo":"https:\/\/example.com\/uploads\/2016\/01\/mypng.png"}  (more data)

我需要删除 URL 中的 s。我正在使用

UPDATE wpiv_postmeta SET meta_value = replace(meta_value, 'https:\/\/example.com', 'http:\/\/example.com');

但是当我在 phpMyAdmin 中模拟它时,我没有得到匹配的行。

而且我不想 运行 因为它太贪心了:

UPDATE wpiv_postmeta SET meta_value = replace(meta_value, 'https:', 'http:');

如何转义或取消转义 UPDATE 查询中的斜线?

您必须进行两次转义,因为 SQL 解析器在处理查询字符串时删除了一级转义:

SELECT ... WHERE foo LIKE '%\a%' // find any 'a' in the db
SELECT ... WHERE foo LIKE '%\a%' // find any '\a' in the db

所以你需要

... REPLACE(meta_evalue, 'http:\/\/', 'http://') ...