mysql - 更新包含 ID 的 mySQL 行
问题描述
我有一个 mySQL 表,read_by
其中有一列包含以下行:
-17-6
-11-8-6-62
-6
-6-22-45
-16-77
-31-3-6-24
这些是用户的 ID,每个 ID 都以破折号开头-
现在我已将用户 6 更改为 136
如何更新每一行,只需将 6 更改为 136,记住可能有 -16、-62、-167 等 ID,并且 ID 6 位于不同的位置。
以下是 WHERE 条件:
WHERE read_by = "-6"
WHERE read_by LIKE "%-6"
WHERE read_by LIKE "-6-%"
WHERE read_by LIKE "%-6-%"
UPDATE messages SET [...] WHERE ...
如何更改确切的 6 并保持其余部分不变?
谢谢。
解决方案
您需要在列中附加一个破折号,以便在更新后过滤和删除它:
update messages
set read_by = trim(trailing '-' from replace(concat(read_by, '-'), '-6-', '-136-'))
where concat(read_by, '-') like '%-6-%'
请参阅演示。
结果:
> | read_by |
> | :----------- |
> | -17-136 |
> | -11-8-136-62 |
> | -136 |
> | -136-22-45 |
> | -16-77 |
> | -31-3-136-24 |
推荐阅读
- r - 模块中的错误(childScope$input,childScope$output,childScope,...):未使用的参数(childScope$output,childScope)
- python - 课程没有运行 - 没有结果
- angular - 我无法从 Angular 的规范文件中访问组件 - Karma/Jasmine 单元测试
- regex - 在 Adobe Bridge 中批量重命名文件
- vuex - 在商店的空数组中传递谷歌地图路线数据
- java - EJB 事务需要很长时间才能提交
- github-actions - 将 linter 自动修复结果提交到 PR?
- python - Condor 成功运行 python,但不显示输出文件
- javascript - 有没有办法在 jQuery/Javascript 的一次调用中访问多层次的 JSON 值?
- node.js - 寻找单个模型的 Mongoose Schema 建议