我想在表格中选择数组中某些项目满足比较条件(> = n)的行。这可能不使用不需要吗?
答案 0 :(得分:1)
unnest()
是计算数组中已过滤元素的自然方法。
但是,你可以在这样的sql函数中隐藏它:
create or replace function number_of_elements(arr int[], val int)
returns bigint language sql
as $$
select count(*)
from unnest(arr) e
where e > val;
$$;
with test(id, arr) as (
values
(1, array[1,2,3,4]),
(2, array[3,4,5,6]))
select id, arr, number_of_elements(arr, 3)
from test;
id | arr | number_of_elements
----+-----------+--------------------
1 | {1,2,3,4} | 1
2 | {3,4,5,6} | 3
(2 rows)