我在 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 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/' 它会把它弄乱。
关于mySQL更新表向列添加字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15647765/