2013-03-26 106 views
1

我在mySQL中有一个表,并且想要更新保存目录的特定列。 应扩展目录结构,并且应该用子目录更新相应的列。有很多行要更新,所以我寻找一个方便的脚本来做。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/ 

所以我需要移动目录从起始点至起始点/系统紧随其后。

这应该脚本之后在:

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

因此,从专家的任何想法与一个更具体的做到这一点:如预期

/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/ 

我(也许愚蠢的)更新不工作sql更新?

谢谢。

+0

更正您的UPDATE查询...报价应该围绕'dir'的值 – codingbiz 2013-03-26 21:34:15

回答

1

您可以使用

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

但要小心,因为它会取代所有出现的 '/起始点/ dir_a /' - 如果你的路径是一样的东西“/起始点/ dir_a/random_dir /起始点/ dir_a/'它会搞砸了。

+0

谢谢!太棒了,作品真的很完美。因此,当我从起始点定义目录时,不会有任何以双命名目录作为子目录的未命中。 – user2213429 2013-03-27 20:55:02

相关问题