集合相等

来自 PostgreSQL Wiki
跳转到导航跳转到搜索

代码片段

集合相等

适用于 PostgreSQL

所有维护的版本

SQL

依赖于


数组相等对数组中的顺序和重复项敏感,因此不适合将数组作为集合进行测试。

集合相等可以通过测试数组是否“包含和被包含”来获得。

实现

这是一个便利运算符。它没有针对性能进行优化,不支持索引,也不考虑多维数组。

create function contains_contained_by (anyarray, anyarray) returns boolean 
language SQL as $$
    select $1 <@ $2 and $1 @> $2 
$$
parallel safe --omit this line prior to version 9.6 
immutable; 

create operator <@> (
    procedure = contains_contained_by, 
    leftarg = anyarray, 
    rightarg = anyarray
);

用法

 select '{c,a,b}'::text[] <@> '{b,a,c,b}'::text[];