搜索并替换部分字符串

时间:2015-04-13 19:08:30

标签: mysql sql

我想知道如何替换存储在名为" keyword_data"的列中的值的一部分。在表格中"关键字"。

MySQL列中的值如下所示:

a:5:{s:11:"{%KEYWORD%}";s:59:"keyword test 1";s:9:"{%PRICE%}";s:6:"279,99";s:12:"{%CATEGORY%}";s:6:"Camera";s:9:"{%IMAGE%}";s:61:"http://exemple.com/images/I/1172oJo2lpL._AA160_.jpg";s:12:"{%REDIRECT%}";s:158:"http://www.exemple.net/keywordtest1/dp/B00EHK7QVK/ref=sr_1_750?s=hi&ie=UTF8&qid=1428056859&sr=1-750&keywords=hd1?tag=mytag";}

a:5:{s:11:"{%KEYWORD%}";s:53:"keyword test 2";s:9:"{%PRICE%}";s:6:"397,61";s:12:"{%CATEGORY%}";s:3:"cat";s:9:"{%IMAGE%}";s:61:"exemple.com/images/I/21iYVLu80SL._AA160_.jpg";s:12:"{%REDIRECT%}";s:187:"exemple.com/keywordtest2/dp/B00RDF1GLW/ref=sr_1_6064?s=industrial&ie=UTF8&qid=1428944582&sr=1-6064&keywords=hd2?tag=mytag";}

我不能只是做一个简单的替换值,因为它们都是不同的。

每一行都有一个不同的关键字,我只需要为表中的每一行替换它。

 ?tag=mytag

 &tag=mytag

来自社区的任何帮助都会很酷:)

3 个答案:

答案 0 :(得分:1)

mysql提供了一个名为REPLACE的命令。

REPLACE具有以下结构:

 REPLACE(text, from_string, to_string)

这可以在更新声明中使用:

    UPDATE keyword SET keyword_data = REPLACE(keyword_data, '?tag=mytag', '&tag=mytag');

答案 1 :(得分:0)

您可以使用REPLACE()https://msdn.microsoft.com/en-us/library/ms186862.aspx

SELECT REPLACE('?tag=mytag','?','&');
->&tag=mytag

答案 2 :(得分:0)

只是做:

  UPDATE keyword SET keyword_data = REPLACE( keyword_data , '?tag=mytag' , '&tag=mytag') 
         WHERE keyword_data LIKE '%?tag=mytag%';

Working example!

你也应该非常小心。在你愚弄它之前,总是复制一下你的数据库,因为你可以轻易地把所有东西搞得一团糟只是因为你在某个地方错过了一点点。