Skip to content

数组函数

签名 描述 示例
unnest(array) 将数组 array 展开为多行,类似于 pandas 中的 explode 函数 -

数组操作符

数组是对数学中集合的抽象,他包含了很多集合操作在 PostgreSQL 中以操作符实现:

操作符 描述 示例
array @> array -> bool 第二个数组中元素是否都位于第一个数组中 ARRAY[1,4,3] @> ARRAY[3,1,3] → t
array <@ array -> bool 第一个数组中元素是否都位于第二个数组中 ARRAY[2,2,7] <@ ARRAY[1,7,4,2,6] → t
array && array -> bool 两个数组是否有共有元素 ARRAY[1,4,3] && ARRAY[2,1] → t
array \|\| array -> bool 连接两个数组 ARRAY[1,2,3] \|\| ARRAY[4,5,6,7] → [1,2,3,4,5,6,7]

判断元素是否位于数组中

有两种方法来实现元素是否位于数组中:

SQL
-- 通过 @> 实现
string_to_array(a.combined_value, ';') @> ARRAY[b.value];

-- 通过 ANY 实现
b.value = ANY(string_to_array(a.combined_value, ';'));

-- duckdb 中提供了 array_contains
array_contains(string_to_array(a.combined_value, ';'), b.value)

参考