MySQL搜索并替换字段中的一些文本

时间:2008-09-24 03:18:13

标签: mysql sql search replace

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

即。搜索foo并替换为bar,以便包含值hello foo的字段的记录变为hello bar

7 个答案:

答案 0 :(得分:454)

更改table_namefield以匹配相关的表名和字段:

UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;

答案 1 :(得分:81)

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

答案 2 :(得分:6)

如果你想根据另一个字段的值进行搜索和替换,你可以做一个CONCAT:

update table_name set `field_name` = replace(`field_name`,'YOUR_OLD_STRING',CONCAT('NEW_STRING',`OTHER_FIELD_VALUE`,'AFTER_IF_NEEDED'));

只需将这个放在这里,以便其他人立即找到它。

答案 3 :(得分:6)

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

例如,如果我想用Mark替换所有出现的John,我将在下面使用

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

答案 4 :(得分:1)

Replace字符串函数会这样做。

答案 5 :(得分:1)

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

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

INSTR()方式是第二快的,并且省略WHERE子句总是最慢的,即使该列未被索引。

答案 6 :(得分:0)

我使用上面的命令行如下: 更新TABLE-NAME集FIELD = replace(FIELD,'和','和'); 目的是取代和用和(" A"应该是小写的)。问题是它无法找到"和"在数据库中,但如果我使用"%和%"那么它就可以找到它和许多其他属于一个词或甚至已经小写的那些。