Mysql 使用phpMyAdmin查找https:\/\/并替换为http:\/\/
我在phpmyadmin中遇到查找/替换失败的问题。我认为这一定与数据库中URL中的反斜杠转义有关,我没有正确解释或转义查询中的反斜杠 数据按如下方式存储在Mysql 使用phpMyAdmin查找https:\/\/并替换为http:\/\/,mysql,regex,phpmyadmin,Mysql,Regex,Phpmyadmin,我在phpmyadmin中遇到查找/替换失败的问题。我认为这一定与数据库中URL中的反斜杠转义有关,我没有正确解释或转义查询中的反斜杠 数据按如下方式存储在meta\u value列的wpiv\u postemta表中,URL中的斜杠转义: (more data) [{"ddl-repeat-id":"4","logo":"https:\/\/example.com\/uploads\/2016\/01\/mypng.png"} (more data) 我需要删除URL中的s。我正在使用
meta\u value
列的wpiv\u postemta
表中,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:');
如何在更新查询中转义或取消转义斜杠?由于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://') ...
您必须进行双重转义,因为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://') ...
啊,很有趣,很高兴知道。这就是为什么在phpmyadmin中,我看到尝试的查询是https:\\\\\/\\\\\\\/或带有更多的。我在学习。谢谢啊,很有趣,很高兴知道。这就是为什么在phpmyadmin中,我看到尝试的查询是https:\\\\\/\\\\\\\/或带有更多的。我在学习。谢谢