【问题标题】:MySQL update varchar value using old value plus a new stringMySQL 使用旧值和新字符串更新 varchar 值
【发布时间】:2013-03-09 07:06:42
【问题描述】:

我在表格中有一堆图片参考,例如:

data/fabrics/signature/signature1.jpg
data/fabrics/signature/signature2.jpg

我需要浏览表格并在图像路径中添加一个额外的文件夹,例如:

data/group1/fabrics/signature/signature1.jpg
data/group1/fabrics/signature/signature2.jpg

有什么方法可以只使用 MySQL 查询,还是需要使用 PHP 连接字符串然后更新数据库?

【问题讨论】:

  • 肯定有。你看过mysql文档吗?它包含一组可用于此的字符串函数。

标签: mysql string concatenation


【解决方案1】:

您可以使用一个简单的替换函数,将字符串的开头替换为不同的开头。如果更换如此简单,这可能是最简单的解决方案。

UPDATE tbl SET col=REPLACE(col, 'data/fabrics', 'data/group1/fabrics') WHERE xxx;

您可能需要使用不同的WHERE 子句来运行其中的几个,具体取决于所需的特定替换。

【讨论】:

  • 对不起?我的陈述有什么问题?它将在图像页面中添加一个额外的文件夹。可能会更改精确的搜索/替换术语,因此data/ 可以替换为data/group1/,如果这对所有这些术语都有效。我写它的方式表明您可以将fabrics 放入group1booze 放入group2 或类似的。还是我还缺少什么?
  • 我根本没有编辑声明。我只是在文本中更改了WHERE 的字体。
  • 感谢这完美的工作。我真的很感激这个答案。
  • 我怎样才能“接受”这个答案?还是这附近有这样的东西?
  • 在左边的答案投票计数下方(当前为 0)应该有一个复选标记轮廓。当您单击它时,它会变为绿色并将此答案标记为已接受。
【解决方案2】:
update table1
set link=substring(link,1,charindex('/',link,1))+
         'group1'+substring(link,charindex('/',link,1),LEN(link))
where (your condition)

SQL Fiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-04-05
    • 1970-01-01
    • 2020-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多