在PostgreSQL中查询数组项的条件

时间:2016-01-12 11:53:59

标签: postgresql

我想在表格中选择数组中某些项目满足比较条件(> = n)的行。这可能不使用不需要吗?

1 个答案:

答案 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)