Выберите строки на основе значения элемента JSON

0

Я сохраняю свою полезную нагрузку следующим образом:

имя столбца будет полезной нагрузкой.

{
    "ordernumber":"PO_13122",
    "itemno":"44655644",
    "description":"item001",
    "quantity":"1"
}

Теперь я хочу получить данные на основе номера ordernumber. Как я могу это сделать?

  • 0
    Какая у вас версия mysql?
  • 0
    Сообщество SQL yog -MYSQL GUI v12.4.3
Показать ещё 1 комментарий
Теги:

3 ответа

1

Ваши данные столбца - формат JSON, если ваша версия mysql превышает 5,7, вы можете попробовать использовать метод JSON_EXTRACT.

SELECT JSON_EXTRACT(payload, '$.ordernumber') 
FROM T

sqlfiddle

  • 0
    Могу ли я добавить где пункт там ??
  • 1
    Конечно, вы можете использовать в WHERE непосредственно db-fiddle.com/f/ejGLRLvbNo3Xx3XCuG89pw/1 ... @HelloWorld
Показать ещё 7 комментариев
0

Если вы используете по крайней мере 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)

0

MySQL version> = 5.7 поддержка хранения данных json

insert into user values (NULL,
'{"name":"David","mail":"[email protected]","address":"Shangahai"}');

Ещё вопросы

Сообщество Overcoder
Наверх
Меню