我在表格中有一列包含文件的路径,其行如下:
/here/here2/something.jpg
我需要更改每一行以将其映射到:
/here3/something.jpg
有一种简单的方法吗?谢谢!
答案 0 :(得分: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)
答案 1 :(得分:0)
首先,您熟悉使用PHP吗?您可以编写一个脚本来获取数据库中的所有条目,然后使用preg_replace()更改它们。然后你可以使用mysql来更新数据库。