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

时间:2016-08-17 21:32:13

标签: mysql regex phpmyadmin

我在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查询中转义或取消斜杠?

1 个答案:

答案 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://') ...