首页 > 解决方案 > MySQL根据属性值返回JSON数组索引

问题描述

我有一个这样的 JSON 数据表:

{"a": [{"color": "blue", "value": 15}, {"color": "red", "value": 30}]}

我需要获取“蓝色”同一对象内的“值”。

我想使用下面的代码:

SELECT JSON_EXTRACT(my_data, '$.a[0].value');

问题是“蓝色”对象可以在数组的任何索引中。

那么,有没有办法先检索索引,然后我会使用正确的索引进行查询?

更新

Barmar 的答案有效,但它需要包含在 JSON_UNQUOTE()

标签: mysqljson

解决方案


用于JSON_SEARCH()查找 的路径blue

SELECT JSON_EXTRACT(my_data, JSON_UNQUOTE(REPLACE(JSON_SEARCH(my_data, 'one', 'blue'), '.color', '.value')))

JSON_SEARCH将返回一个字符串,如$.a[0].color. REPLACE将其更改为$.a[0].value,然后提取该元素。

演示


推荐阅读