如何在MySQL数据库中查找和替换单个字符串?

时间:2012-05-30 20:45:10

标签: mysql

我正在将基于Wordpress的网站切换到新服务器并同时更改域名,这意味着我必须在MySQL数据库中查找并替换许多字段。

具体来说,每当它们出现在MySQL的某个字段中时,我必须将“olddomain.com”替换为“newdomain.com”,例如“http://olddomain.com/?p=34”。

如何在我的MySQL数据库中进行大规模的替换?我知道LIKE SQL命令可以在其中找到带有“olddomain.com”的字段,但是如何替换字段的特定部分?

4 个答案:

答案 0 :(得分:5)

您可以将此搜索和替换脚本用于此目的

http://interconnectit.com/124/search-and-replace-for-wordpress-databases/

正如作者所说,原始replace在这些情况下并不好

  

当您迁移WordPress(或任何其他平台使用   您必须使用域之间的数据库中的序列化PHP字符串   一种安全的搜索和替换方法,可以保持完整性   序列化字符串长度。一个简单的转储文件   localhost,例如,newdomain.com是   有问题,因为字符串的长度会改变但索引   对于序列化字符串没有。因此设置丢失   和小部件消失。不好。

Wordpress.org doc本身中提及。

答案 1 :(得分:4)

您可以使用MySQL的REPLACE()功能:

UPDATE `table` SET `fieldname` = REPLACE(fieldname, 'olddomain', 'newdomain');

另一种选择是转储数据库,只需在您选择的编辑器中使用查找和替换。

答案 2 :(得分:1)

这应该对你有所帮助。它只会将olddomain.com替换为newdomain.comolddomain.com左侧和右侧的字符串将保持不变。

UPDATE tablename 
SET columnname = REPLACE(columnname, 'olddomain.com', 'newdomain.com')
WHERE columnname LIKE '%olddomain.com%';

这是函数的工作方式 - REPLACE(text_string, from_string, to_string)

答案 3 :(得分:-1)

由于切换服务器意味着必须转储数据库,因此您只需在创建脚本中用newdomain替​​换olddomain。