sql - 基于postgresql中的数组搜索更新列
问题描述
id | name | status
---+------------------------+--------------------------------
1 | {'Tom','Jerry','Hary'} | { 'Waiting','Waiting',Waiting'}
我想根据名称更新状态列。
例如,我想将名称“Hary”的状态列更新为“Arrived”
id | name | status
---+------------------------+--------------------------------
1 | {'Tom','Jerry','Hary'} | { 'Waiting',Waiting','Arrived'}
注意:我可以通过使用以下查询来实现。但我不想使用索引定位。有没有其他方法可以达到上述结果?
UPDATE table
SET status[3] = 'Arrived'
WHERE name[3]='Hary'
解决方案
正如 S-Man 评论的那样,您应该只修复您的数据模型并将每个名称/状态存储在单独的记录中。
否则,您可以使用array_position()
:
update table set status[ array_position(name, 'Harry') ] = 'Arrived'
where 'Harry' = any(name)
推荐阅读
- excel - 如何保持excel公式与插入新列一致
- python - FailedPreconditionError: /home/timucin/Thesis/Tagger-master8/train; 是目录
- django - Django:预选或标签。模型关系
- linux - 如何使用 SED 命令在模式匹配之前插入一行
- javascript - 防止将特定的用户控件元素放在复制粘贴剪贴板上
- grails - Grails - 从另一个租户检索对象 - 错误导入
- mongodb - 是否可以比 mongorestore 更快地从 .bson 文件恢复 MongoDB 数据库?
- python - Selenium 测试在开发环境中本地运行时出错(到达错误页面:about:neterror?e=connection)但在 Travis CI 中失败
- java - JAVA:导致错误结果的密码摘要生成算法
- python - 如何在 asyncio.sleep 中使用“结果”和“循环”参数?