Mysql 要替换的sql查询
MySQL中我的描述字段中有一个字符串,如下所示: “文本传递:123456789文本” 我想将“通过:”后的4个字符替换为star。 结果: “文本传递:***56789文本” 我用这个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
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:***”
为了满足每个需要,您需要指定密码允许使用哪些字符。我可以根据您的规格调整给定的正则表达式哪个版本的MySQL?mariaDB@strawberry“如果密码更改,我的查询将无法工作”是什么意思。试着更好地解释。。添加适当的数据样本OK;哪种版本的MariaDBfor示例:“文本传递:987654321文本文本”找不到987654321并替换为****54321