mysql - 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
,然后提取该元素。
推荐阅读
- python-3.x - Python Selenium - 单击下拉菜单后选择
- python - 如何在 tkinter 的单个按钮中分配多个命令
- google-apps-script - 修复触发器
- log4j2 - 如何配置基于时间的日志及其压缩策略
- angular - routerLink 正在渲染 %23,而不是 #
- flutter - 颤动找出价格最高的 ToDoItem 的标题
- javascript - Vue:通过方法从父组件提交子组件表单的最佳方式
- oracle - 如何将多个版本的 Oracle 客户端驻留在同一服务器上的 DBD::Oracle 中
- ffmpeg - 使用特殊配置编译和打包 FFmpeg
- javascript - 如何将嵌套对象添加到结果数组