1

我在 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 更新来做到这一点吗?

谢谢。

4

1 回答 1

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/' 它会搞砸的。

于 2013-03-26T21:45:30.787 回答