MySQL 根据属性值返回 JSON 数组索引

标签 mysql json

我有一个包含如下 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,然后提取该元素。

DEMO

关于MySQL 根据属性值返回 JSON 数组索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56193438/

相关文章:

php - 我应该什么时候关闭类(class)中打开的 MySQL 连接?

javascript - 处理 JSON 以创建层次关系

javascript - 根据先前下拉菜单中选定的值填充下拉菜单?

javascript - 如何访问对象数组的属性

java - Jackson - 反序列化为运行时指定的类

javascript - 你如何解析非格式良好的 JSON(可能使用 jQuery)

php - 最佳做法是什么?为每个用户使用不同的数据库或使用具有用户标识列的相同数据库

mysql - 更快相当于 mysql inner join with sum

Mysql 列计数与第 1 行的值计数不匹配,但列是正确的

php - 显示比较 <select> 中两个表的现有和不存在的 ID