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

Posted

技术标签:

【中文标题】MySQL搜索并替换字段中的一些文本【英文标题】:MySQL search and replace some text in a field 【发布时间】:2010-09-12 14:51:21 【问题描述】:

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

即搜索foo 并替换为bar,因此字段值为hello foo 的记录变为hello bar

【问题讨论】:

【参考方案1】:

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

UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE INSTR(field, 'foo') > 0;
REPLACE(字符串函数) INSTR(字符串函数)

【讨论】:

UPDATE [table_name] SET [field_name] = REPLACE([field_name], "foo", "bar"); 我认为不使用WHERE instr(field, 'foo') > 0;会更快(所以它不会执行2次搜索)...我错了吗? @treddell,SQL 字符串中没有从 1 开始的位置。 @inemanja, @Air 没有WHERE 子句,你在所有行上都执行UPDATE... 像 Pring 一样,如果您要发表这样的评论,您可能需要解释原因。是原始建议中的错误,还是您的错误?而且您确实知道,在对数据库进行任何彻底更改之前,您应该先备份它?【参考方案2】:
UPDATE table_name 
SET field = replace(field, 'string-to-find', 'string-that-will-replace-it');

【讨论】:

帮助了我。对于所有的菜鸟,请删除方括号。 请注意:在此答案中,将“字段”替换为您要修改的字段的 名称。有关更清晰的语法介绍,请参阅下面的答案。在此答案中,“字段”不是 SQL 关键字。【参考方案3】:
 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】:

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

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

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

【讨论】:

对我有用,因为我需要在 where 中添加另一个子句。 UPDATE table_name SET field = REPLACE(field, 'foo', 'bar') WHERE field LIKE '%foo%' AND otherfield='foo22'【参考方案5】:

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

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

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

【讨论】:

如果引用字段名,make sure you use the right kind of quotes!【参考方案6】:

Replace 字符串函数可以做到这一点。

【讨论】:

为我工作。这取决于你如何解释这个问题。如果您需要更改数据库条目,请使用update。否则这个解决方案会更好,因为它可以在不更新字段的情况下使用。【参考方案7】:

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

【讨论】:

以上是关于MySQL搜索并替换字段中的一些文本的主要内容,如果未能解决你的问题,请参考以下文章

mysql 数据库 列表中的字段前如何批量添加指定字符?

sh 搜索文本文件中的字符串并替换它们

text 从ACF搜索并替换地址goolge地图中的文本

在MySQL中用regex搜索并替换字段

Python:如何替换pdf中的文本

使用正则表达式c#替换文档中的文本字段