我正在尝试更新PostgreSQL中的表。
事实上,我正在尝试更新数组。我有一个表调用switch_ids的OLD_ID,NEW_ID,我有表TABLE_TO_UPDATE,列my_array(一个id数组)。我想修改这个数组中的一些id。我做了类似的事情:
UPDATE TABLE_TO_UPDATE
SET my_array=array_replace(my_array,OLD_ID,NEW_ID)
FROM switch_ids
WHERE switch_ids.old_id = ANY(my_array);
问题在于,当同一行(my_array)中有多个值要更改时,它只会更改一个值而不是全部值。我怎样才能同时更新所有内容?嵌套电话?
答案 0 :(得分:1)
必定存在某种误解。 array_replace()
(pg 9.3 + )替换项目的所有出现次数,而不仅仅是第一次出现。考虑:
SELECT array_replace(ARRAY[5,1,2,5,4,5], 5, 3);
结果:
{3,1,2,3,4,3}
用新值
替换每个等于给定值的数组元素