Есть json:
{
"outNum": "23123",
"userId": 657,
"outDate": "2017-11-17",
"reasonNum": "123-рчс-17-0084",
"FiasAoguid": [
"da051ec8-da2e-4a66-b542-473b8d221ab4",
"29251dcf-00a1-4e34-98d4-5c47484a36d4"
],
"reasonDate": "2017-07-16"
}
Если для обычного значения json я могу сделать отдельную виртуальную колонку с ключом и фильтровать по ней:
ALTER TABLE `default` ADD COLUMN `json_outDate_virtual` date GENERATED ALWAYS AS (`properties` ->> '$."outDate"') COMMENT 'Дата';
То, по массивам я не представляю как сделать такой индекс или вообще как фильтровать его, запрос типа этого, не работает:
select * from default where JSON_EXTRACT(`properties`, "$.FiasAoguid") LIKE "da051ec8-da2e-4a66%";
select * from default where JSON_EXTRACT(`properties`, "$.FiasAoguid[*]") LIKE "bd8e6511-e4b9-4841-90de%";
select * from default where `properties`->"$.FiasAoguid[*]" LIKE "bd8e6511-e4b9-4841-90de%";
Может можно конкатенацию как то сделать в стринговое поле занчений масива, скажем через запятую и лайкать по ним?
Вот так я могу получить значение конкретного ключа:
select `properties`->"$.FiasAoguid[0]" as code from claims where `properties`->"$.FiasAoguid" is not null;
Не пойму как сделать поиск по всем ключам [*] не помогает