我有一个包含如下 JSON 数据的表:
{"a": [{"color": "blue", "value": 15}, {"color": "red", "value": 30}]}
我需要获取“蓝色”同一对象内的“值”。
我想使用下面的代码:
SELECT JSON_EXTRACT(my_data, '$.a[0].value');
问题是“蓝色”对象可以在数组的任何索引中。
那么,有没有办法先检索索引,然后再使用正确的索引进行查询?
更新
Barmar 的答案有效,但它需要包含在 JSON_UNQUOTE() 中
最佳答案
使用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
,然后提取该元素。
关于MySQL 根据属性值返回 JSON 数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56193438/