У меня есть MySQL, хранится pro c, где я ввожу JSON строку с несколькими полями, которая является списком массивов в зависимости от того, что выбрано в html ВЫБРАТЬ форму:
{
"date1": "2020-01-26",
"date2": "2020-01-27",
"param1": ["Alpha","Bravo"],
"param2": [],
"param3": ["A","B","C"]
"param4": []
"param5": ["1","2","3"]
}
Теперь хочу построить запрос, где искать в моей таблице в зависимости от выбранных параметров. И если список массивов пуст, не искать по этому параметру и не брать их все.
if (json_length(param1)>0) then
set @and_param1=concat('and `param1` in (replace(replace(param1, \'[\', \'\'), \']\', \'\'))');
end if;
if (json_length(param2)>0) then
set @and_param2=concat('and `param2` in (replace(replace(param2, \'[\', \'\'), \']\', \'\'))');
end if;
if (json_length(param3)>0) then
set @and_param3=concat('and `param3` in (replace(replace(param3, \'[\', \'\'), \']\', \'\'))');
end if;
if (json_length(param4)>0) then
set @and_param4=concat('and `param4` in (replace(replace(param4, \'[\', \'\'), \']\', \'\'))');
end if;
if (json_length(param5)>0) then
set @and_param5=concat('and `param5` in (replace(replace(param5, \'[\', \'\'), \']\', \'\'))');
end if;
select * from table where `date` between date1 and date2 @and_param1 @and_param2 @and_param3 @and_param4 @and_param5
Но не могу разобраться в рабочем запросе ...