数组函数
签名 | 描述 | 示例 |
---|---|---|
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)