Я хотел запросить записи из таблицы MySQL, используя столбец, который имеет строку JSON. Так как я работаю над старым проектом, используется версия MySQL 5.0, и, следовательно, я не могу использовать функции mysql 5.7 json, например. JSON_CONTAINS и т. Д. И т. Д.
select * cpd_company where operation_data = '{"opening_status":"open", "days": ["Mon"]}';
Столбец operation_data содержит такую строку json:
{"days":["Mon","Fri"],"open_hour":"12:00 AM","close_hour":"12:30 PM","operating_type":"daily","opening_status":"open","journey_type":"Departure"}
Это не работает, потому что столбец имеет тип данных Text, а предоставленная строка не равна полной строке.
Может кто-нибудь помочь? Спасибо
Может тебе стоит попробовать LIKE '%{$needle}%'
и другие строковые функции в случае, если вы не хотите реорганизовать структуру вашей базы данных?
Насколько я мог видеть из вашего примера, вы могли бы разделить ваш запрос, чтобы получить необходимый результат:
1) первый запрос выберет записи с «opening_status
«:»open
«игла,
2) второе — с «Mon
игла
3) чем вы должны найти intersection
из этих двух запросов результатов.
Следующее будет работать, только если у вас есть только одна запись "Mon"
, но я верю, что вы найдете обходной путь, используя MySql
строковые функции в том случае, если их малоMon
в вашем JSON
строка.
Других решений пока нет …