Я сохраняю свою полезную нагрузку следующим образом:
имя столбца будет полезной нагрузкой.
{
"ordernumber":"PO_13122",
"itemno":"44655644",
"description":"item001",
"quantity":"1"
}
Теперь я хочу получить данные на основе номера ordernumber
. Как я могу это сделать?
Ваши данные столбца - формат JSON, если ваша версия mysql превышает 5,7, вы можете попробовать использовать метод JSON_EXTRACT.
SELECT JSON_EXTRACT(payload, '$.ordernumber')
FROM T
WHERE
непосредственно db-fiddle.com/f/ejGLRLvbNo3Xx3XCuG89pw/1 ... @HelloWorld
Если вы используете по крайней мере MySQL v8 или MariaDB v10.2 или новее, вы должны изучить использование виртуальных столбцов. Это позволяет определить столбец как функцию поля JSON. Виртуальные столбцы также могут быть проиндексированы для оптимальной производительности запросов.
ALTER TABLE orders ADD order_number VARCHAR(100) AS (JSON_VALUE(orders->"$.ordernumber"))
CREATE INDEX orders_idx1 ON orders (order_number)
Теперь вы можете использовать виртуальный столбец (order_number), как и любой другой столбец.
SELECT * FROM orders WHERE order_number = 1;
Есть хорошие онлайн-ресурсы для MySQL и MariaDB.
(отказ от ответственности, я не выполнял ни одного из вышеуказанных запросов и не использовал MariaDB)
MySQL version> = 5.7 поддержка хранения данных json
insert into user values (NULL,
'{"name":"David","mail":"[email protected]","address":"Shangahai"}');