Здравствуйте. В магазине на opencart 2.3 я создал 2 группы пользователей: физические лица и юридические лица. Для юридических лиц добавил дополнительные поля (наименования организации, ИНН и тд). При оформлении заказа юридическим лицом эти дополнительные поля записываются в таблицу order, в поле custom_field в виде json. Теперь я захотел сделать фильтр по "наименованию организации" и столкнулся с проблемой каким образом искать в поле custom_field. Пробовал искать с помощью LIKE и json_extract. LIKE не ищет названия на русском языке даже если я их перекодирую, на json_extract вылезает постоянно ошибка. Подскажите пожалуйста.
Значит вы что-то не так делаете. У LIKE нет никаких проблем с кириллицей. Какая? И почему не JSON_CONTAINS? Кстати, все эти json функции появились только в MySQL 5.7. Вы уверены, что ваша версия соответствует?
Да, версия не 5.7. В столбце custom_field есть запись {"8":"\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f 2"}. Абракадабра "\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f 2" это точно "Компания 2". Я в фильтре ввожу "Компания 2". Принимаю это значение и перекодирую Код: $new=json_encode(Компания 2); $new="\u041a\u043e\u043c\u043f\u0430\u043d\u0438\u044f 2"; значение в запрос Код: SELECT * FROM `ocnd_order` WHERE `custom_field` LIKE '%".$new."%' этот запрос дает пустой результат --- Добавлено, 25 сен 2018 --- однозначно, что я делаю не так, но по другому не знаю
Ну, так это уже не кириллица, а юникод сущности. Посмотрите здесь: https://stackoverflow.com/questions/13287145/mysql-querying-for-unicode-entities