您是否知道运行更新的方法,更新会自动以数字顺序将新数值插入到逗号分隔的字符串中?
SELECT ids FROM some.place;
ids
-------------------------
{13,24,29,35,42,61,82}
答案 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)