mySQL update table将字符串添加到列

时间:2013-03-26 21:29:34

标签: mysql string add

我在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更新来做这个想法吗?

感谢。

1 个答案:

答案 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 /',它会搞砸它。