mysql - 要替换的sql查询
问题描述
我在 MySQL 的描述字段中有一个字符串,如下所示:
“文字文字文字通行证:123456789文字文字文字”
我想将“pass:”后的 4 个字符替换为星号。结果:
“文字文字文字通行证:****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:****”替换找到的字符串
正则表达式中的一个词是顺便说一句。包含字母数字和下划线字符的东西。有效将是例如“This_is_1_word”、“Word”、“123153”。
因此,我的示例仅适用于仅包含上述字母数字和下划线字符的密码。
为了满足所有需要,您需要指定密码允许使用哪些字符。我可以根据您的规格调整给定的正则表达式
推荐阅读
- java - 无法生成仅在整个密钥中使用/找到一次的随机字母密钥
- css - :hover 元素更改 ::after 样式另一个组件
- vb.net - 如何将键入的组合框输入存储到组合框列表中,仅适用于当前会话?
- c++ - POSIX C/C++ 日志文件(VEX V5 大脑)
- microsoft-translator - XHTML 修改不正确
- c++ - Pybind11 + nan Node 模块冲突
- task - 赛普拉斯任务。然后不按预期工作
- python - 我不断收到 500 内部服务器错误
- amazon-web-services - scheduling notebooks within EMR and issue installing libraries aws
- r - How to plot maps scattered over another plot (i.e. outside their actual coordinates)?