什么MySQL查询将尽一文本搜索和替换在一个特定领域中的一个表?

I.e。搜索 foo 和替换 bar 这样一个记录与一场有价值 hello foo 变得 hello bar.

有帮助吗?

解决方案

改变 table_namefield 来配你的表名称和领域的问题:

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

其他提示

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

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

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

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

 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');

替换字符串功能将那样做。

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

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

INSTR()方式是第二快的,省略 WHERE 子句总是最慢,即使该列没有编入索引。

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top