2011-08-04 2 views

答えて

1

これには正規表現は必要ありません。単純な文字列関数はそのトリックを行うことができます。あなたはこのようにクエリを使用することができます:ここで

update test set path=concat('/here3/', 
    substring(path, length('/here/here2/') + 1)) 
    where path like '/here/here2/%'; 

は、それが機能することを証明するために少しテストケースである:

mysql> create table test (path varchar(64)); 
Query OK, 0 rows affected (0.02 sec) 

mysql> insert into test (path) values 
    -> ('/here/here2/something.jpg'), 
    -> ('/here/here2/something-else.jpg'), 
    -> ('/here/here2/yet-another-something.jpg'); 
Query OK, 3 rows affected (0.01 sec) 
Records: 3 Duplicates: 0 Warnings: 0 

mysql> select * from test; 
+---------------------------------------+ 
| path         | 
+---------------------------------------+ 
| /here/here2/something.jpg    | 
| /here/here2/something-else.jpg  | 
| /here/here2/yet-another-something.jpg | 
+---------------------------------------+ 
3 rows in set (0.00 sec) 

mysql> update test set path=concat('/here3/', 
    -> substring(path, length('/here/here2/') + 1)) 
    -> where path like '/here/here2/%'; 
Query OK, 3 rows affected (0.00 sec) 
Rows matched: 3 Changed: 3 Warnings: 0 

mysql> select * from test; 
+----------------------------------+ 
| path        | 
+----------------------------------+ 
| /here3/something.jpg    | 
| /here3/something-else.jpg  | 
| /here3/yet-another-something.jpg | 
+----------------------------------+ 
3 rows in set (0.00 sec) 
0

まず、PHPの使用に精通していますか?データベースからすべてのエントリを取得し、preg_replace()を使用してエントリを変更するスクリプトを作成できます。次に、mysqlを使ってデータベースを更新することができます。

関連する問題