我在phpmyadmin中遇到了查找/替换失败的问题。我认为这必须与转义数据库中URL的斜杠的反斜杠有关,而且我没有正确地计算或转义查询中的反斜杠。
数据存储在wpiv_postmeta
列的meta_value
表格中,并且网址中的斜杠已转义:
(more data) [{"ddl-repeat-id":"4","logo":"https:\/\/example.com\/uploads\/2016\/01\/mypng.png"} (more data)
我需要删除网址中的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查询中转义或取消斜杠?
答案 0 :(得分:2)
你必须双重转义,因为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://') ...