在select查询中提取并计算json值

nwnhqdif  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(310)

我试过用谷歌搜索,但找不到:/
我想从json字符串中提取值 TEXT 字段并在查询中运行计算。
为了向后兼容,我不能在mysql中使用新的json列类型。
json是 {"stock1":1,"stock2":1} 在一个叫做 json_field_total_stock .
所以我想要的是“3”,因为总库存是1+2=3库存 json_field_total_stock .
所以我的选择看起来像这样:

SELECT json_field_total_stock
      , order_quantity 
   FROM products 
  WHERE json_field_total_stock = order_quantity;
bq3bfh9z

bq3bfh9z1#

您需要编写代码从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中有两个以上的项,那么它会变得更加复杂。如果该数字是无限的,则需要编写一个执行循环的存储函数来将它们全部相加。
在客户端语言中使用json库和循环数组或对象的能力可能更容易做到这一点。

相关问题