У меня есть SQL запрос в PostgreSQL, который фильтрует определенные поля в виде массива для нахождения в диапазоне bigint. Я хотел бы добавить возможность не отфильтровывать нулевые значения. В существующих запросах нулевые значения для всех полей отфильтровываются:
select *
from table_test
where '[0,2147483647]'::int8range @> ALL(ARRAY[fields])
И я хотел бы сделать что-то подобное, только здесь я проверяю весь массив, в то время как я хотел бы проверять каждое field:
select count(*) from dbm.inventory_source where '[0,2147483647]'::int8range @> ALL(ARRAY[id, exchange_id, min_cpm_micros])
or (array[id, exchange_id, min_cpm_micros]) is null
Кроме того, я не хотел бы проверять каждое поле на пустое значение, вместо этого я хотел бы проверять нулевые значения для всего массива полей. Я передаю имена полей, например одну строку, в запрос (называемые полями), и по этой причине я не хочу проверять каждое поле отдельно. Такая реализация была создана, чтобы иметь больше общих c запросов для нескольких таблиц.
Как я могу исправить этот запрос?