Mysql 要替换的sql查询

Mysql 要替换的sql查询,mysql,sql,Mysql,Sql,MySQL中我的描述字段中有一个字符串,如下所示: “文本传递:123456789文本” 我想将“通过:”后的4个字符替换为star。 结果: “文本传递:***56789文本” 我用这个 UPDATE table_name SET field = REPLACE(description , '123456789', '****56789') WHERE field LIKE '%123456789%'; 如果密码更改,我的查询将不起作用 正如我在评论中已经提到的,你可以用REGEXP_REP

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

“文本传递:123456789文本”

我想将“通过:”后的4个字符替换为star。 结果:

“文本传递:***56789文本”

我用这个

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

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

正如我在评论中已经提到的,你可以用REGEXP_REPLACE来做这件事,假设你的评论是关于MariaDB而不是mysql更正确

因此,根据您的示例,我将写下以下声明:

UPDATE table_name SET field = REGEXP_REPLACE(description , '\bpass:\w{4}', 'pass:****') WHERE field LIKE '%123456789%';
如果您不熟悉正则表达式,它的作用基本上是:

  • 搜索一个以“pass:”开头的单词,然后在单词的边界中在其后添加四个字符
  • 将找到的字符串替换为“pass:***”
正则表达式中的单词是btw。包含字母数字和下划线字符的单词。 有效的将是例如“This_is_1_word”、“word”、“123153”

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


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

哪个版本的MySQL?mariaDB@strawberry“如果密码更改,我的查询将无法工作”是什么意思。试着更好地解释。。添加适当的数据样本OK;哪种版本的MariaDBfor示例:“文本传递:987654321文本文本”找不到987654321并替换为****54321