根据JSON项目值选择行

时间:2018-08-07 07:36:59

标签: mysql

我正在这样存储我的有效载荷:

列名将是有效载荷。

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

现在,我想基于ordernumber获取数据。我该怎么办?

3 个答案:

答案 0 :(得分:1)

如果您的MySQL版本高于5.7,则您的列数据为JSON格式,则可以尝试使用JSON_EXTRACT方法。

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

sqlfiddle

答案 1 :(得分:0)

MySQL版本> = 5.7支持json数据存储

insert into user values (NULL,
'{"name":"David","mail":"jiangchengyao@gmail.com","address":"Shangahai"}');

答案 2 :(得分: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;

MySQLMariaDB都有不错的在线资源。

(免责声明;我没有运行以上任何查询,也没有使用MariaDB)