postgres:没有函数的op连接子句

时间:2017-01-27 12:29:12

标签: sql postgresql sql-function postgresql-9.5

我可以用条件逻辑来做这件事,但我想我是否可以在一个查询中做到这一点。我想基于id数组限制查询的结果,但如果数组为空,我想返回所有行:

CREATE OR REPLACE FUNCTION maybe_filter(arr integer[])
  RETURNS TABLE( ... )
  LANGUAGE sql
AS $function$
        select *
        from some_table st
        join (select distinct unnest($1) id order by 1) arr 
             on st.id = arr.id OR ...
$function$;

1 个答案:

答案 0 :(得分:0)

我在写这个问题时想通了。卫生署。但是,我不想让世界剥夺我的聪明才智<-)所以张贴q / a而不是回到工作岗位。

CREATE OR REPLACE FUNCTION maybe_filter(arr integer[])
  RETURNS TABLE( ... )
  LANGUAGE sql
AS $function$
        select *
        from some_table st
        where array_length($1,1) = 0 or st.id = any($1)
$function$;