更新列值,替换字符串的一部分

我有一个表与以下列在MySQL数据库

[id, url]

url是这样的:

 http://domain1.example/images/img1.jpg

我想更新所有的url到另一个域

 http://domain2.example/otherfolder/img1.jpg

保持文件名称不变。

我必须运行什么查询?

514789 次浏览
UPDATE urls
SET url = REPLACE(url, 'domain1.example/images/', 'domain2.example/otherfolder/')
UPDATE yourtable
SET url = REPLACE(url, 'http://domain1.example/images/', 'http://domain2.example/otherfolder/')
WHERE url LIKE ('http://domain1.example/images/%');

相关文档:http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_replace

尝试使用替换函数:

mysql> SELECT REPLACE('www.example.com', 'w', 'Ww');
-> 'WwWwWw.example.com'

注意,它是区分大小写的。

你需要在哪里子句来替换只有符合WHERE子句中的条件的记录(而不是所有记录)。使用符号表示部分字符串

LIKE ('...//example.com/images/%');

意思是所有包含开始"...//example.com/images/"并且有任何AFTER的记录(这是…的%)

另一个例子:

LIKE ('%http://example.com/images/%')

这意味着所有包含"http://example.com/images/"

在字符串的任何部分…

试试这个…

update [table_name] set [field_name] =
replace([field_name],'[string_to_find]','[string_to_replace]');

首先,要检查

SELECT * FROM `university` WHERE course_name LIKE '%&amp%'

接下来,就要更新了

UPDATE university
SET course_name = REPLACE(course_name, '&amp', '&') WHERE id = 1

结果:工程&技术=>工程,技术