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 に答える