我尝试过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;
答案 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库并具有遍历数组或对象的功能,使用客户端语言来执行此操作可能会更容易。