Как проверить, имеет ли столбец mysql DB массив json объекта и содержит конкретную строку - PullRequest
0 голосов
/ 23 декабря 2019

Я сохранил данные json в столбце базы данных mysql, который выглядит следующим образом:

[{"one": "mg road номер 711 xyz"}, {"two": "dc roadсюжет № 711 xyz "}]

json данные, как указано выше, сохраняются для всех записей с другим адресом. Поэтому я пытаюсь найти всех клиентов, у которых есть адрес mg road.

Итак, я попробовал JSON_SEARCH и JSON_CONTAINS , ноон всегда возвращает мне записи не найдены, хотя в таблице есть 2 записи. Так что, где я иду не так.

SELECT * FROM `tbl_clients_data` WHERE JSON_SEARCH(reci_address,'all', "mg road")


SELECT * FROM `tbl_clients_data` WHERE JSON_CONTAINS(reci_address, 'mg road', '$.one')

1 Ответ

0 голосов
/ 23 декабря 2019

Просто попробуйте этот код:

SELECT * FROM `tbl_clients_data` WHERE JSON_EXTRACT(reci_address, '$[*].one') 
LIKE 'mg road%' OR JSON_EXTRACT(reci_address, '$[*].two') LIKE 'mg road%'

JSON_EXTRACT Извлекает данные из документа JSON. Извлеченные данные выбираются из частей, соответствующих аргументам пути. Возвращает все совпадающие значения;либо в качестве единственного сопоставленного значения, либо, если аргументы могут возвращать несколько значений, результат автоматически переносится в виде массива в порядке сопоставления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...