【问题标题】:mySQL update table add string to columnmySQL更新表将字符串添加到列
【发布时间】:2013-03-26 21:29:34
【问题描述】:

我在 mySQL 中有一个表,并且想要更新包含目录的特定列。 应扩展目录结构,并应使用子目录更新相应的列。有很多行要更新,所以我寻找一个方便的脚本来做。

例子:

c1 列保存目录

/startpoint/dir_a/
/startpoint/dir_a/subdir_1/
/startpoint/dir_a/subdir_1/subsubdir_1/
/startpoint/dir_a/subdir_1/subsubdir_2/
/startpoint/dir_a/subdir_1/subsubdir_3/
/startpoint/dir_a/subdir_2/
/startpoint/dir_a/subdir_3/

所以我需要将目录从起点移动到起点/系统。

这应该在脚本之后:

/startpoint/system/dir_a/
/startpoint/system/dir_a/subdir_1/
/startpoint/system/dir_a/subdir_1/subsubdir_1/
/startpoint/system/dir_a/subdir_1/subsubdir_2/
/startpoint/system/dir_a/subdir_1/subsubdir_3/
/startpoint/system/dir_a/subdir_2/
/startpoint/system/dir_a/subdir_3/

我的(也许是愚蠢的)更新没有按预期工作:

update table1 set dir=/startpoint/system/||substr(dir,12) where dir like '/startpoint/dir_a/%'

所以专家有什么想法可以通过更具体的 sql 更新来做到这一点?

谢谢。

【问题讨论】:

  • 更正您的 UPDATE 查询...报价应该在 dir 的值附近

标签: mysql string add


【解决方案1】:

你可以使用

UPDATE table SET dir = REPLACE(dir,'/startpoint/dir_a/','/startpoint/system/dir_a/'
WHERE dir LIKE '/startpoint/dir_a/%'

但要小心,因为它会替换所有出现的 '/startpoint/dir_a/' - 如果你的路径类似于 '/startpoint/dir_a/random_dir/startpoint/dir_a/' 它会搞砸的。

【讨论】:

  • 谢谢!很棒,而且工作得非常完美。因此,当我从起点定义目录时,不会错过将双命名目录作为子目录的情况。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-09
  • 2017-10-09
  • 2011-09-10
  • 2018-08-12
  • 2014-07-05
  • 2021-09-04
相关资源
最近更新 更多