You need to enable JavaScript to run this app.
最新活动
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

MySQL在嵌套层次中使用动态键名的JSON_EXTRACT

MySQL中,可以使用JSON_EXTRACT函数提取JSON对象中的键值。但是,如果键名是动态的,即在嵌套层次中键名可能不同,那么该如何处理?下面将展示如何解决此问题,以示例代码为例:

假设有一个JSON对象: { "person1": { "name": "Alice", "age": 23, "country": "US" }, "person2": { "name": "Bob", "age": 29, "country": "CA" }, "person3": { "name": "Charlie", "age": 34, "country": "UK" } }

现在,假设我们想要从person1, person2或person3中提取名称和年龄。由于每个person对象拥有不同的键名,我们需要使用JSON_EXTRACT和动态键名来完成这项任务:

SELECT JSON_EXTRACT( JSON_EXTRACT( JSON_EXTRACT(persons, CONCAT('$.', variable)), '$.name' ), CONCAT('$.', variable) ) AS name_age FROM (SELECT @i:=0) v, (SELECT JSON_OBJECTAGG(CONCAT('person', @i:=@i+1), JSON_OBJECT('name', a.name, 'age', a.age)) AS persons FROM ( SELECT 'Alice' AS name, 23 AS age UNION ALL SELECT 'Bob' AS name, 29 AS age UNION ALL SELECT 'Charlie' AS name, 34 AS age) a) b, (SELECT CONCAT('person', n) AS variable FROM (SELECT 1 AS n UNION ALL SELECT 2 UNION ALL SELECT 3) c) d WHERE JSON_EXTRACT(persons, CONCAT('$.', variable)) IS NOT NULL;

输出结果如下: +-----------+ | name_age | +-----------+ | ["Alice", 23] | | ["Bob", 29] | | ["Charlie", 34] | +-----------+

可以看出,通过使用JSON_EXTRACT,我们可以从动态键名中提取

本文内容通过AI工具匹配关键字智能整合而成,仅供参考,火山引擎不对内容的真实、准确或完整作任何形式的承诺。如有任何问题或意见,您可以通过联系service@volcengine.com进行反馈,火山引擎收到您的反馈后将及时答复和处理。
展开更多
面向开发者的云福利中心,ECS 60元/年,域名1元起,助力开发者快速在云上构建可靠应用

社区干货

漫谈开源许可证:开发者需要知道的法理和事例

**让我们的 C 库使用 GPL 许可证会迫使专有软件的开发者去使用其他的 C 库—对他们不是问题,对我们则是。**但是如果编译 FFmpeg 时启用了 GPL 参数,即便应用仅仅调用编译的 FFmpeg 动态链接库,该应用程序也需... 那么你就不用对这些库做任何处理而直接使用;整个程序的源代码发布要求也不包含这些系统库,即使你发布的是连接了这些库之后的可执行文件也是一样。 **> 依赖包**ffmpeg.wasm 项目是 FFmpeg 的 WebAssembly...

一个大龄程序猿2022年的开发故事|社区征文

然后android app webview嵌套 vue2+vant,期间也接触了一个react项目 - 2021年年初开始走上,vite+vue3+echarts大屏项目,相对于熟悉了解了vue2后,直接用vue2的语法来写是没问题的,然后慢慢的也在学习vue3+setu... json的生成也是通过页面进行配置。其中难度比较大的便是数据的联动控制显示隐藏,以及数据校验、正则匹配、以及将部分js代码通过界面去编写,前端解析json后再动态执行js代码也是一个不小的难点。 - 另外一个突破...

MAD,现代安卓开发技术:Android 领域开发方式的重大变革|社区征文

强制执行垃圾回收以及跟踪内存分配以定位**内存方面的问题*** Battery:会监控 CPU、网络无线装置和 GPS 传感器的使用情况,并直观地显示其中每个组件消耗的电量,了解应用在**哪里耗用了不必要的电量*** Netwo... 其中的登录请求必须明确写在非 UI 线程中。```javavoid login(String username, String token) { String jsonBody = "{ username: \"$username\", token: \"$token\"}"; Executors.newSingleThread...

借助 MAD 助力你的 Android 应用开发|社区征文

其范围覆盖了从 UI 到 Data 各个层级,降低了开发者们自造轮子的需求。近期 Jetpack 组件的架构规范又进行了全面升级,帮助我们在开发过程中能更好地贯彻关注点分离这一设计目标。## 2.1 ArchitectureAndroid 倡... device-spec=file:device-spec.json```通过 device.json 生成本地 Apk```shellbundletool extract-apks --apks=${apksPath} --device-spec={deviceSpecJsonPath} --output-dir={outputDirPath}```也...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

MySQL在嵌套层次中使用动态键名的JSON_EXTRACT -优选内容

函数概览
提取日期和时间中的天数,以星期为周期。DAY_OF_WEEK 函数等同于 DOW 函数。 DAY_OF_YEAR 函数 DAY_OF_YEAR(KEY) 提取日期和时间中的天数,以年为周期。DAY_OF_YEAR 函数等同于 DOY 函数。 DOW 函数 DOW(KEY) 提取日期和时间中的天数,以星期为周期。DOW 函数等同于 DAY_OF_WEEK 函数。 DOY 函数 DOY(KEY) 提取日期和时间中的天数,以年为周期。DOY 函数等同于 DAY_OF_YEAR 函数。 EXTRACT 函数 EXTRACT(field from KEY...
漫谈开源许可证:开发者需要知道的法理和事例
**让我们的 C 库使用 GPL 许可证会迫使专有软件的开发者去使用其他的 C 库—对他们不是问题,对我们则是。**但是如果编译 FFmpeg 时启用了 GPL 参数,即便应用仅仅调用编译的 FFmpeg 动态链接库,该应用程序也需... 那么你就不用对这些库做任何处理而直接使用;整个程序的源代码发布要求也不包含这些系统库,即使你发布的是连接了这些库之后的可执行文件也是一样。 **> 依赖包**ffmpeg.wasm 项目是 FFmpeg 的 WebAssembly...
采集容器日志(Sidecar-CRD方式)
JSON 和完全正则等种采集模式。除各种采集配置默认附加的预留字段之外,日志服务还会对 LogCollector 采集到的容器日志添加以下预留字段,并默认为其创建索引。 容器文本日志的预留字段: 预留字段 说明 __image_name__ 镜像名称__container_name__ 容器名称__container_ip__ 容器或 Pod 的 IP 地址。 __pod_name__ Pod 名称__pod_uid__ Pod 的唯一标识。 __namespace__ Pod 所属的 Namespace。 前提条件已...
一个大龄程序猿2022年的开发故事|社区征文
然后android app webview嵌套 vue2+vant,期间也接触了一个react项目 - 2021年年初开始走上,vite+vue3+echarts大屏项目,相对于熟悉了解了vue2后,直接用vue2的语法来写是没问题的,然后慢慢的也在学习vue3+setu... json的生成也是通过页面进行配置。其中难度比较大的便是数据的联动控制显示隐藏,以及数据校验、正则匹配、以及将部分js代码通过界面去编写,前端解析json后再动态执行js代码也是一个不小的难点。 - 另外一个突破...

MySQL在嵌套层次中使用动态键名的JSON_EXTRACT -相关内容

MAD,现代安卓开发技术:Android 领域开发方式的重大变革|社区征文

强制执行垃圾回收以及跟踪内存分配以定位**内存方面的问题*** Battery:会监控 CPU、网络无线装置和 GPS 传感器的使用情况,并直观地显示其中每个组件消耗的电量,了解应用在**哪里耗用了不必要的电量*** Netwo... 其中的登录请求必须明确写在非 UI 线程中。```javavoid login(String username, String token) { String jsonBody = "{ username: \"$username\", token: \"$token\"}"; Executors.newSingleThread...

search_by_text

output_fields 格式错误或者过滤字段不是 collection 里的字段时, 接口返回错误。 如果索引的距离方式为cosine,向量字段返回的向量是归一化后的向量。 partition string/int 否 "default" 子索引名称,类型与... filter 表达式算子 算子说明 示例 must 针对指定字段名生效,语义为必须在 [...] 之中,即 "must in"。 JSON { "op": "must", "field": "region", "conds": ["cn", "sg"]} must_not 针对指定字段名生效,...

借助 MAD 助力你的 Android 应用开发|社区征文

其范围覆盖了从 UI 到 Data 各个层级,降低了开发者们自造轮子的需求。近期 Jetpack 组件的架构规范又进行了全面升级,帮助我们在开发过程中能更好地贯彻关注点分离这一设计目标。## 2.1 ArchitectureAndroid 倡... device-spec=file:device-spec.json```通过 device.json 生成本地 Apk```shellbundletool extract-apks --apks=${apksPath} --device-spec={deviceSpecJsonPath} --output-dir={outputDirPath}```也...

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

采集容器日志(DaemonSet-CRD方式)

pod_name__ Pod 名称__pod_uid__ Pod 的唯一标识。 __namespace__ Pod 所属的 Namespace。 前提条件已在 Kubernetes 集群中安装了 LogCollector。相关操作步骤请参考 安装 LogCollector(DaemonSet 方式)。 已在 Kubernetes 集群集群中安装了 LogCollector CRD。相关操作步骤请参考安装 LogCollector CRD。 限制说明采集容器标准输出时:Docker 容器引擎仅支持 JSON 类型的日志驱动。 如果某些容器匹配了多个采集配...

similarity_search

output_fields 格式错误或者过滤字段不是 collection 里的字段时, 接口返回错误。 partition string/int 否 "default" 子索引名称,类型与 partition_by 的 field_type 一致,字段值对应 partition_by 的 fiel... 时,partition 输入类型为 string,格式要求 "^[a-zA-Z0-9._]+$"。 filter 表达式算子 算子说明 示例 must 针对指定字段名生效,语义为必须在 [...] 之中,即 "must in"。 JSON { "op": "must", "field": "re...

JSON 函数

我们对JSON格式做了如下假设: 字段名称(函数的参数)必须使常量。 字段名称必须使用规范的编码。例如:visitParamHas('{"abc":"def"}', 'abc') = 1,但是 visitParamHas('{"\\u0061\\u0062\\u0063":"def"}', 'abc') = 0 函数可以随意的在多层嵌套结构下查找字段。如果存在多个匹配字段,则返回第一个匹配字段。 JSON除字符串文本外不存在空格字符。 visitParamHas(参数,名称)检查是否存在«name»名称的字段 visitParamExtractUI...

search_by_id

已写入 vector 类型的字段名称和字段值。 通过 create_index 创建索引时,已创建 vector_index 向量索引。 请求参数 参数 类型 是否必选 默认值 参数说明 id int64 是 主键 id。 filter map 否 过... 时,partition 输入类型为 string,格式要求 "^[a-zA-Z0-9._]+$"。 filter 表达式算子 算子说明 示例 must 针对指定字段名生效,语义为必须在 [...] 之中,即 "must in"。 JSON { "op": "must", "field": "re...

search_by_id

已写入 vector 类型的字段名称和字段值。 通过 create_index 创建索引时,已创建 vector_index 向量索引。 请求参数 参数 类型 是否必选 默认值 参数说明 id int64 是 主键 id。 filter map 否 过... 时,partition 输入类型为 string,格式要求 "^[a-zA-Z0-9._]+$"。 filter 表达式算子 算子说明 示例 must 针对指定字段名生效,语义为必须在 [...] 之中,即 "must in"。 JSON { "op": "must", "field": "re...

max_marginal_relevance_search

output_fields 格式错误或者过滤字段不是 collection 里的字段时, 接口返回错误。 partition string/int 否 "default" 子索引名称,类型与 partition_by 的 field_type 一致,字段值对应 partition_by 的 fiel... 时,partition 输入类型为 string,格式要求 "^[a-zA-Z0-9._]+$"。 filter 表达式算子 算子说明 示例 must 针对指定字段名生效,语义为必须在 [...] 之中,即 "must in"。 JSON { "op": "must", "field": "re...

特惠活动

热门爆款云服务器

100%性能独享,更高内存性能更佳,学习测试、web前端、企业应用首选,每日花费低至0.55元
60.00/1212.00/年
立即购买

域名注册服务

cn/top/com等热门域名,首年低至1元,邮箱建站必选
1.00/首年起32.00/首年起
立即购买

DCDN国内流量包100G

同时抵扣CDN与DCDN两种流量消耗,加速分发更实惠
2.00/20.00/年
立即购买

产品体验

体验中心

云服务器特惠

云服务器
云服务器ECS新人特惠
立即抢购

白皮书

一图详解大模型
浓缩大模型架构,厘清生产和应用链路关系
立即获取

最新活动

爆款1核2G共享型服务器

首年60元,每月仅需5元,限量秒杀
立即抢购

火山引擎增长体验专区

丰富能力激励企业快速增长
查看详情

数据智能VeDI

易用的高性能大数据产品家族
了解详情

一键开启云上增长新空间

立即咨询