什么MySQL查询将在表中的一个特定字段中进行文本搜索和替换?

例如,搜索foo并将其替换为bar,这样具有值为hello foo的字段的记录就变成了hello bar。


当前回答

我使用上面的命令行如下所示: update TABLE-NAME set FIELD = replace(字段,'And', 'And'); 目的是用And代替And(“A”应该是小写)。问题是它无法在数据库中找到“和”,但如果我使用“%And%”,那么它可以找到它以及许多其他的和,它们是单词的一部分,甚至是已经小写的。

其他回答

根据我的经验,最快的方法是

UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE field LIKE '%foo%';

INSTR()方法是第二快的方法,完全省略WHERE子句是最慢的,即使列没有索引。

 UPDATE table SET field = replace(field, text_needs_to_be_replaced, text_required);

比如,如果我想把所有出现的约翰替换为马克,我会用下面的方法,

UPDATE student SET student_name = replace(student_name, 'John', 'Mark');

Replace字符串函数会做这个。

UPDATE table_name 
SET field = replace(field, 'string-to-find', 'string-that-will-replace-it');

我使用上面的命令行如下所示: update TABLE-NAME set FIELD = replace(字段,'And', 'And'); 目的是用And代替And(“A”应该是小写)。问题是它无法在数据库中找到“和”,但如果我使用“%And%”,那么它可以找到它以及许多其他的和,它们是单词的一部分,甚至是已经小写的。