sql - 如何在postgresql中更改数组列中的值
问题描述
我有
crew_member_ids integer[],
表中的列。并希望将特定 id(例如 1)的所有条目更改为另一个 id(例如 10)
{} - > {}
{1, 2} -> {10, 2}
{2, 3} -> {2, 3}
{1} -> {10}
我该怎么做 ?
到目前为止,我只设法选择了受影响的行
select * from initial_costs where 1 = any(crew_member_ids);
解决方案
测试表
create table test_tabe(crew_member_ids integer[]);
insert into test_tabe values (ARRAY[3,7,4]),(ARRAY[1,8,4]),(ARRAY[1,5],ARRAY[1,1,5]),(ARRAY[3,8,20]),(ARRAY[8,10,2]);
crew_member_ids
-----------------
{3,7,4}
{1,8,4}
{1,5}
{1,1,5}
{3,8,20}
{8,10,2}
更改查询
update test_tabe set crew_member_ids[1]=10 where array_position(crew_member_ids,1)=1;
crew_member_ids
-----------------
{3,7,4}
{8,10,2}
{3,8,20}
{10,8,4}
{10,5}
{10,1,5}
推荐阅读
- c# - c#运行python脚本并读取输出导致
- java - 在 OpenJDK 8 上启动 JavaFX 应用程序时出现 ClassNotFoundException
- python - 如何在 Spark 中正确设置 python 版本?
- javascript - 在 mongoDB 中获取错误未知组运算符'$group'
- node.js - DOCKER_BUILDKIT=1 docker build --ssh default -t atomiclib
- python - hours minutes seconds in each line in a txt file
- validation - 我正在寻找针对 Fhir 结构定义的 Fhir 资源验证
- java - 谷歌登录在詹金斯工作中的无头铬硒中不起作用
- c# - 从 MVC 项目调用 Web APi
- qt5 - 如何将交叉编译的 Qt 二进制文件从一台计算机复制到另一台计算机