Или, к примеру, если опции известные, то можно запрос выполнять в несколько этапов:
IF tags IS NOT NULL THEN
-- запросить данные по tags в массив
END IF;
IF products IS NOT NULL THEN
-- запросить данные по products в массив
END IF;
И так далее. Потом эти массивы объединить, например, или иначе обработать