Sql 按排序顺序更新

Sql 按排序顺序更新,sql,postgresql,csv,sql-update,Sql,Postgresql,Csv,Sql Update,您知道一种运行更新的方法吗?更新会自动将一个新的数值按数字顺序插入逗号分隔的字符串中 SELECT ids FROM some.place; ids ------------------------- {13,24,29,35,42,61,82} 在这种情况下,由于“逗号分隔字符串”是有效的PostgreSQL数组文字,因此可以强制转换为integer[],并使用intarray扩展名的sort()方法 CREATE EXTENSION intarray; UPDATE some_pla

您知道一种运行更新的方法吗?更新会自动将一个新的数值按数字顺序插入逗号分隔的字符串中

SELECT ids FROM some.place;

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

在这种情况下,由于“逗号分隔字符串”是有效的PostgreSQL数组文字,因此可以强制转换为
integer[]
,并使用
intarray
扩展名的
sort()
方法

CREATE EXTENSION intarray;

UPDATE some_place
SET ids = sort( ids::integer[] || new_value )::text
WHERE ...
通常,在字段中存储逗号分隔的列表是非常糟糕的设计。如果必须,请使用数组,但不要仅将其存储为文本

e、 g


最好的做法是首先不要存储逗号分隔的列表:将Postgres命令行客户端的标记替换为
psql
,看起来intarray不是一个选项在阵列中创建扩展;错误:无法打开扩展控制文件“/usr/pgsql-9.3/share/extension/intarray.control”:没有此类文件或directory@user3486527您只需要安装contrib包
regress=> select sort( '{13,24,29,35,42,61,82}'::integer[] || 18 )::text;
           sort            
---------------------------
 {13,18,24,29,35,42,61,82}
(1 row)