0
Я мог бы просто сделать это с условной логикой, но думал, что спрошу, могу ли я сделать это в одном запросе. Я хочу, чтобы ограничить результат запроса на основе массива идентификаторов, но если массив пуст, я хотел бы вернуть все строки:postgres: no op join clause for function
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$;
'array_length ($ 1,1)' также может быть записан как «мощность ($ 1)» –
Спасибо. На самом деле мое решение, похоже, не работает. (: Не уверен, что еще нет. – Sigfried
О, может быть, это была проблема с кардинальностью? Прежде чем он вернул 0 строк мгновенно, после изменения array_length на мощность это займет много времени, поэтому, вероятно, это работает ... Да, это сработало Спасибо, почему бы это работать, а не array_length = 0? – Sigfried