postgresql – 消除postgres中的重复数组值
发布时间:2020-12-13 16:49:33 所属栏目:百科 来源:网络整理
导读:我有一个类型bigint的数组,如何删除该数组中的重复值? 例如:array [1234,5343,6353,1234,1234] 我应该得到数组[1234,5343,6353,…] 我在postgres手册中测试了示例SELECT uniq(sort(‘{1,2,3,1}’:int [])),但它不工作。 sort(int [])和uniq(int
我有一个类型bigint的数组,如何删除该数组中的重复值?
例如:array [1234,5343,6353,1234,1234] 我应该得到数组[1234,5343,6353,…] 我在postgres手册中测试了示例SELECT uniq(sort(‘{1,2,3,1}’:int [])),但它不工作。
sort(int [])和uniq(int [])函数由intarray contrib模块提供。
要启用它,您必须通过执行可以在postgresql安装的contrib目录中找到的_int.sql文件来注册模块。 在Debian / Ubuntu系统上,您必须安装postgresql-contrib-8.4软件包,然后该文件将位于/usr/share/postgresql/8.4/contrib/_int.sql(版本号可能不同) 如果你不想使用intarray contrib模块,或者你必须从不同类型的数组中删除重复,你还有另外两种方法。 如果你至少有PostgreSQL 8.4,你可以利用unnest(anyarray)函数 SELECT ARRAY(SELECT DISTINCT UNNEST('{1,1}'::int[]) ORDER BY 1); ?column? ---------- {1,3} (1 row) 或者,你可以创建自己的函数来做到这一点 CREATE OR REPLACE FUNCTION array_sort_unique (ANYARRAY) RETURNS ANYARRAY LANGUAGE SQL AS $body$ SELECT ARRAY( SELECT DISTINCT $1[s.i] FROM generate_series(array_lower($1,1),array_upper($1,1)) AS s(i) ORDER BY 1 ); $body$; 这里是一个示例调用: SELECT array_sort_unique('{1,1}'::int[]); array_sort_unique ------------------- {1,3} (1 row) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 使用swift 3.1编译的模块无法在Swift 3.0.2中导入
- 如何将xml(对象)映射到Objective-C中的方法?
- 12、swift开发iOS——字符
- c# – 从Visual Studio数据库项目生成实体框架模型
- c – 复制构造函数的存在会导致函数通过引用而不是值返回
- 如何将swift字符串转换为CFString
- ruby-on-rails – Rails将普通旧字符串保存为SQlite作为BLO
- iphone – 如何在Cocos2d中更新和显示分数整数?
- 在使用Ruby进行命令行时,如何逃避垂直条?
- PostgreSQL vacuum_freeze_table_age和vacuum_freeze_min_a