У меня есть эта структура JSON в поле таблицы в базе данных MariaDB:
table column name: BcDJSON
{"placards":
[
{"barcode":"???","destination":"???","weight":"???"},
{"barcode":"???","destination":"???","weight":"???"},
{etc..}
]
}
мой текущий запрос sql выглядит так:
"SELECT * from table WHERE BcDJSON LIKE '%.$value.%'";
но это не приводит к стабильному коду. Я пробовал использовать JSON_EXTRACT, но перебирал объект в массив объектов в MariaDB: я пробовал несколько вариантов - и чтение документации не дало ответа на мой вопрос. JSON_EXTRACT вообще то, что я действительно хочу здесь использовать? Мне нужно вернуть всю строку - если штрих-код существует в этой структуре JSON.
синтаксисы, которые я пробовал: (??? = допустимые значения)
SELECT * from datawork WHERE JSON_EXTRACT('BcDJSON', '$.barcode') = '???'
SELECT * from datawork WHERE JSON_EXTRACT('BcDJSON', '$.placards, $.barcode') = '???'
SELECT * from datawork WHERE JSON_EXTRACT('BcDJSON', '$.placards.$.barcode') = '???'
SELECT * from datawork WHERE JSON_EXTRACT('BcDJSON', '$.placards->$.barcode') = '???'
SELECT * from datawork WHERE JSON_EXTRACT('BcDJSON', '$.placards$.barcode') = '???'
SELECT * from datawork WHERE JSON_EXTRACT('BcDJSON', '$.placards') = '???'
SELECT * from datawork WHERE JSON_EXTRACT('BcDJSON', '$.placards', '$.barcode') = '???'
SELECT * from datawork WHERE JSON_EXTRACT('BcDJSON', '$.placards.barcode') = '???'
mysql
наmariadb
и отредактировал ваш заголовок и вопрос. Поддержка JSON в MariaDB сильно отличается от MySQL. - person Bill Karwin   schedule 21.01.2020