mysql - 查找https:\/\/and replace with http:\/\/using phpMyAdmin

标签 mysql regex phpmyadmin

我在 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/

相关文章:

php - 从多个表中检索不存在或匹配行集的多列(mysql php)

regex - 使用正则表达式比较数字

javascript - 如何用空字符串替换 '.'

mysql - 如何合并两个表以获取MySQL中不同表的结果

mysql - 错误: Error 1215: Cannot add foreign key constraint even when both fields are of the same type

mysql - 为 n :m relationship 创建表

php - 在 jquery 中处理分页的问题

java - 我无法在java中获取第一组正则表达式模式

php - 验证问题阻止使用 PHP 更新数据库

php - 自定义 Phmyadmin 错误消息