Заключительный MYSQL запрос - PullRequest
0 голосов
/ 26 января 2020

У меня есть 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

Но не могу разобраться в рабочем запросе ...

...