Следующий сценарий: у меня есть JSON столбец данных с именем 'address' в моей таблице sql. Я вставил в него массив объектов. Позже мне нужно будет выбрать весь объект массива, выяснив, какой type
в запросе будет передан. Поэтому, если я передаю { "type": "shipping" }
своему REST API, я бы хотел получить все данные в объекте с помеченным типом «shipping».
Просто один из различных JSON форматов, которые я пробовал:
{
"address": [
{
"type": "shipping",
"street": "streetName",
"streetNumber": "1"
},
{
"type": "billing",
"street": "streetName",
"streetNumber": "2"
},
{
"type": "custom",
"street": "streetName",
"streetNumber": "3"
}
]
}
Вот как данные сохраняются в одном столбце:
[
{"type": "custom", "street": "streetName", "streetNumber": "1"},
{"type": "shipping", "street": "streetName", "streetNumber": "2"},
{"type": "billing", "street": "streetName", "streetNumber": "3"}
]
Итак, я попытался сделать магию c с функцией JSON MySQL. Такие запросы, как
SELECT JSON_SEARCH(address, 'one', 'shipping')
FROM user_data;
, работают отлично, но это не тот результат, который мне нужен. Поэтому я подумал об использовании подзапросов
SELECT JSON_EXTRACT(address, (SELECT JSON_SEARCH(address, 'one', 'shipping')))
FROM user_data
WHERE user_id = 1;
, но это просто заканчивается "неверным JSON выражением пути" (Код ошибки: 3143). Я уже пробовал с разными запросами и JSON форматами данных, например, вместо этого, используя массив. Я пытался вставить данные вроде
"address": {
"shipping": {
"street": ...
.
},
"billing": {
"street": ...
.
}
}
Теперь я просто запутался, и кажется, что есть только mysql документация, которая сейчас не помогает ...