我在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移动到startpoint / system。
这应该在脚本之后:
/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更新来做这个想法吗?
感谢。
答案 0 :(得分: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 /',它会搞砸它。