我在 phpmyadmin 中遇到查找/替换失败的问题。我认为这一定与数据库中 URL 中的反斜杠转义斜杠有关,而且我没有正确考虑或转义查询中的反斜杠。
数据像这样存储在 wpiv_postmeta
表的 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://') ...
关于mysql - 查找https:\/\/and replace with http:\/\/using phpMyAdmin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39006610/