按排序顺序更新

时间:2014-09-20 00:39:10

标签: sql postgresql csv sql-update

您是否知道运行更新的方法,更新会自动以数字顺序将新数值插入到逗号分隔的字符串中?

SELECT ids FROM some.place;

ids
-------------------------
 {13,24,29,35,42,61,82}

1 个答案:

答案 0 :(得分:1)

在这种情况下,因为你的"逗号分隔字符串"是一个有效的PostgreSQL数组文字,您可以转换为integer[]并使用intarray扩展名的sort()方法。

CREATE EXTENSION intarray;

UPDATE some_place
SET ids = sort( ids::integer[] || new_value )::text
WHERE ...

通常,在字段中存储以逗号分隔的列表是非常糟糕的设计。如果必须,请使用数组,但不要将其存储为文本。

e.g。

regress=> select sort( '{13,24,29,35,42,61,82}'::integer[] || 18 )::text;
           sort            
---------------------------
 {13,18,24,29,35,42,61,82}
(1 row)
相关问题