Postgres中的拼接阵列

时间:2015-04-26 21:28:37

标签: arrays postgresql

是否可以(轻松)拼接Postgres中的数组?例如,我想将4的所有值替换为值812,因此{2, 4, 7}的数组应该变为{2, 8, 12, 7}。也许我会以错误的方式解决这个问题,但我需要维护这些列的整数数组列类型。感谢您给我的任何指导。

1 个答案:

答案 0 :(得分:0)

也许是UNNEST

WITH rep(ord, what, with_what) AS(
  VALUES (1,4,8),
  (2,4,12)
)
SELECT array_agg(COALESCE(with_what,elem) ORDER BY no, ord) AS new_array
FROM(
  SELECT * 
  FROM UNNEST('{2, 4, 7}'::INTEGER[]) WITH ORDINALITY AS arr(elem, no)    
    LEFT JOIN rep ON arr.elem = rep.what
) AS q;

这样您就可以轻松定义一整套替换。