首页 > 解决方案 > 要替换的sql查询

问题描述

我在 MySQL 的描述字段中有一个字符串,如下所示:

“文字文字文字通行证:123456789文字文字文字”

我想将“pass:”后的 4 个字符替换为星号。结果:

“文字文字文字通行证:****56789文字文字文字”

我用这个

UPDATE table_name SET field = REPLACE(description , '123456789', '****56789') WHERE field LIKE '%123456789%';

如果密码更改我的查询不起作用。

标签: mysqlsql

解决方案


正如我在评论中已经提到的,您可以使用 REGEXP_REPLACE 执行此操作,假设您的评论认为这篇文章是关于 MariaDB 而不是 mysql 更正确。

因此,鉴于您的示例,我将编写以下语句:

UPDATE table_name SET field = REGEXP_REPLACE(description , '\bpass:\w{4}', 'pass:****') WHERE field LIKE '%123456789%';

如果您不熟悉正则表达式,这基本上是:

  • 搜索以“pass:”开头的单词,然后在单词的边界处有四个附加字符。
  • 用“pass:****”替换找到的字符串

正则表达式中的一个词是顺便说一句。包含字母数字和下划线字符的东西。有效将是例如“This_is_1_word”、“Word”、“123153”。

因此,我的示例仅适用于仅包含上述字母数字和下划线字符的密码。

为了满足所有需要,您需要指定密码允许使用哪些字符。我可以根据您的规格调整给定的正则表达式


推荐阅读