【问题标题】:MySql Replace part of a string with escape charactersMySql 用转义字符替换部分字符串
【发布时间】:2016-03-10 13:53:43
【问题描述】:

我正在尝试使用新的相对 url 对数据库表中的旧 url 进行简单更新,但我不断收到“0 行受影响”。我认为这可能与字符串中的转义字符有关?

“数据”列中的网址现在使用反斜杠进行结构化。 这是我的 SQL:

 UPDATE vjfl_sliderimages
 SET data = REPLACE(data, '\/myolddomain.com\/images\/', '\/images\/')

这应该可以将每张图片的 URL 从 myolddomain.com/images/ 更改为 /images/,但由于某种原因,它没有任何影响。

【问题讨论】:

    标签: mysql string url replace


    【解决方案1】:

    对于遇到此问题的任何人,请使用 CONCAT SQL 函数和对应于 '\' ASCII 字符的 CHAR(92)。

    例子:

    UPDATE vjfl_sliderimages SET data = REPLACE(data, CONCAT(CHAR(92), '/myolddomain.com', CHAR(92), '/images', CHAR(92), '/'), CONCAT(CHAR(92), '/images', CHAR(92), '/'))
    

    【讨论】:

      【解决方案2】:

      因为它是正斜杠所以不需要转义符号。

      UPDATE vjfl_sliderimages SET data = REPLACE(data,'/myolddomain.com/images/', '/images/');
      

      编辑:- 如果之前的 url 是 myolddomain.com/images/

      那么查询必须是

      UPDATE vjfl_sliderimages SET data = REPLACE(data,'myolddomain.com/images/', '/images/');
      

      【讨论】:

      • 谢谢火影忍者。我最初尝试过,但它返回“0行受影响”。
      • 你能放准确的网址吗......因为我已经检查了我的本地数据库并且它运行良好......如果你的域名是 myolddomain.com/images/,我已经编辑了答案跨度>
      • 此数据库已从我的本地服务器迁移到实时服务器。我本地服务器上的 URL 是 192.168.10.15/myolddomain.com/images。滑块组件使用了它认为是 /myolddomain.com/images 的相对 URL,由于显而易见的原因,它不再在实时服务器上工作。这就是为什么有一个前导斜线。现在它在实时服务器上,图像的 URL 都是错误的。我可以手动编辑它们,但有很多而且需要几个小时。
      【解决方案3】:

      转义字符 (/) 在 MySQL 或 SQL VARCHAR 字段中的处理方式不同。 试试

       UPDATE vjfl_sliderimages
       SET data = REPLACE(date, '////myolddomain.com////images////', '////images////');
      

      如果 4 次飞溅不起作用,请尝试 3 次。

      【讨论】:

      • 感谢 Gaurav 小伙子。我尝试了 4、3 和 2 个斜杠,但没有效果。消息显示“您的 SQL 查询已成功执行”,但没有任何变化。
      • 试试这个stackoverflow.com/questions/4271186/… 并将我上面的答案与它结合起来。
      • 更新 vjfl_sliderimages SET data = REPLACE(data, '////myolddomain.com////images////', '////images////') WHERE 数据像'%////myolddomain.com////images////%';试试这个,让我知道它是否有效。
      • 不。 “0 行受影响”。尝试使用 3 和 4 斜线。
      • SELECT 查询返回了多少记录。尝试运行SELECT * FROM Table_name where FieldName like '////myolddomain.com////images////';
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-03-25
      • 2012-07-17
      • 2016-05-27
      • 2020-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多