MySQL正则表达式替换?

时间:2011-08-04 03:11:48

标签: mysql

我在表格中有一列包含文件的路径,其行如下:

/here/here2/something.jpg

我需要更改每一行以将其映射到:

/here3/something.jpg

有一种简单的方法吗?谢谢!

2 个答案:

答案 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来更新数据库。