在选择查询中提取并计算JSON值

时间:2018-10-26 18:10:44

标签: mysql

我尝试过Google,但是找不到:/

我想从TEXT字段的JSON字符串中提取值,然后在查询中运行计算。

为了向后兼容,我不能在MySQL中使用新的JSON列类型。

JSON {"stock1":1,"stock2":1}位于json_field_total_stock字段中。

所以我要的是“ 3”,因为库存json_field_total_stock中的总库存为1 + 2 = 3。

所以我的选择看起来像这样:

 SELECT json_field_total_stock
      , order_quantity 
   FROM products 
  WHERE json_field_total_stock = order_quantity;

1 个答案:

答案 0 :(得分:0)

您需要编写代码以从JSON中提取数字并将其添加。

WHERE SUBSTR(json_field_total_stock, 
             LOCATE('"stock1":', json_field_total_stock) + 9,
             LOCATE(',', json_field_total_stock) - LOCATE('"stock1":', json_field_total_stock) - 9) +
      SUBSTR(json_field_total_stock, 
             LOCATE('"stock2":', json_field_total_stock) + 9,
             LOCATE('}', json_field_total_stock) - LOCATE('"stock2":', json_field_total_stock) - 9) = order_quantity

如果JSON中有2个以上的项目,它将变得更加复杂。如果数量不受限制,则需要编写一个存储函数,该函数执行循环以将它们全部添加。

使用JSON库并具有遍历数组或对象的功能,使用客户端语言来执行此操作可能会更容易。