简体   繁体   English

如何在mysql查询中查找和替换字符串

[英]How to find and replace string in mysql query

I have something like this 我有这样的东西

No. | Incorrect_Keyword | Correct Keyword

1 | flash | Flash Player

2 | flash player | Flash Player

3 | flash player plugin | Flash Player

4 | flash player plgin | Flash Player

It's saved in csv file and I use PHP to read each line and replace 它保存在csv文件中,我使用PHP读取每一行并替换

The problem is when I run query 问题是当我运行查询时

$query="UPDATE keyword SET keyword= REPLACE(keyword, 'incorrect_keyword',  'correct_keyword') WHERE INSTR(keyword, 'incorrect_keyword') > 0"; 

It replace all the "flash" to "Flash Player" So record number 2 will become "FLash Player player" How to make it right? 它将所有“ flash”替换为“ Flash Player”,因此记录2将成为“ FLash Player播放器”。如何正确设置? Thanks 谢谢

如果您要将所有Flash值都删除到Flash Player中,则可以简单地使用like查询。

UPDATE `keyword` set `keyword` = 'Flash Player' where `keyword` like '%flash%';

You have to use LIKE instead of INSTR 您必须使用LIKE而不是INSTR

So your query must be something like below 因此,您的查询必须如下所示

UPDATE keyword SET keyword= REPLACE(keyword, 'incorrect_keyword',  'correct_keyword') WHERE `keyword` LIKE CONCAT('%',`incorrect_keyword`,'%');

supposed incorrect_keyword and keyword are column names 假定不正确的关键字和关键字是列名

为更新添加一个ORDER BY:

$query="UPDATE keyword SET keyword= REPLACE(keyword, `incorrect_keyword`,  `correct_keyword`) WHERE INSTR(keyword, 'incorrect_keyword') > 0" ORDER BY No DESC; 

Some php equivalent of ucwords is here. 一些ucwords的php等效文件在这里。

https://www.thingy-ma-jig.co.uk/blog/30-09-2010/mysql-how-upper-case-words https://www.thingy-ma-jig.co.uk/blog/30-09-2010/mysql-how-upper-case-words

A bit tedious but should be helpful. 有点乏味,但应该会有所帮助。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM