更新列值,替换字符串的一部分
Posted
技术标签:
【中文标题】更新列值,替换字符串的一部分【英文标题】:Update a column value, replacing part of a string 【发布时间】:2012-04-27 23:09:29 【问题描述】:我在 mysql 数据库中有一个包含以下列的表
[id, url]
网址如下:
http://domain1.com/images/img1.jpg
我想将所有 url 更新到另一个域
http://domain2.com/otherfolder/img1.jpg
保持文件名不变。
我必须运行什么查询?
【问题讨论】:
MySQL string replace的可能重复 【参考方案1】:首先,必须检查
SELECT * FROM university
WHERE course_name LIKE '%&%'
接下来,要更新了
更新大学 SET course_name = REPLACE(course_name, '&', '&') WHERE id = 1
结果:工程与技术 => 工程与技术
【讨论】:
【参考方案2】:您需要 WHERE 子句替换 ONLY 符合 WHERE 子句中条件的记录(而不是所有记录)。您使用 % 符号表示部分字符串:I.E.
LIKE ('...//domain1.com/images/%');
表示所有BEGIN以"...//domain1.com/images/"
并在之后有任何内容的记录(即%
for...)
另一个例子:
LIKE ('%http://domain1.com/images/%')
表示所有包含"http://domain1.com/images/"
的记录
在字符串的任何部分...
【讨论】:
【参考方案3】:试试这个...
update [table_name] set [field_name] =
replace([field_name],'[string_to_find]','[string_to_replace]');
【讨论】:
【参考方案4】:尝试使用REPLACE function:
mysql> SELECT REPLACE('www.mysql.com', 'w', 'Ww');
-> 'WwWwWw.mysql.com'
注意区分大小写。
【讨论】:
@UniversalGrasp 在这里查看很多可能的答案:***.com/questions/5656056/…【参考方案5】:UPDATE yourtable
SET url = REPLACE(url, 'http://domain1.com/images/', 'http://domain2.com/otherfolder/')
WHERE url LIKE ('http://domain1.com/images/%');
相关文档:http://dev.mysql.com/doc/refman/5.5/en/string-functions.html#function_replace
【讨论】:
嗨,我为什么需要 where ? @GuyCohen 因为否则查询将修改表中的每一行。WHERE
子句优化查询以仅修改具有特定 URL 的行。从逻辑上讲,结果会是一样的,但是加上WHERE
会使得操作更快。
WHERE
还确保您只替换 begin 为 http://etc/etc/
或 string_to_be_replaced.
的部分字符串例如,在给定的答案中,@987654328 @ 会受到影响,但foobar/http://domain1.com/images/
不会。【参考方案6】:
UPDATE urls
SET url = REPLACE(url, 'domain1.com/images/', 'domain2.com/otherfolder/')
【讨论】:
从未想过这是可能的!谢谢! 观看 CaSiNg(问我怎么知道的!)。 :) 这节省了几个小时,谢谢 你是英雄 当 MySQL 可以开箱即用地完成这些事情时,您无需通过服务器端语言对其进行管理,这真是太棒了)以上是关于更新列值,替换字符串的一部分的主要内容,如果未能解决你的问题,请参考以下文章
用其他列值pyspark替换包含美元符号($)的子字符串[重复]