【MySQL】MySQL中的函数之JSON_KEYS

在 MySQL 中,JSON_KEYS() 函数用于获取 JSON 对象中的所有键名。这个函数非常有用,特别是在你需要知道 JSON 对象中包含哪些键时。下面是一些关于如何使用 JSON_KEYS() 的详细说明和示例。

基本语法

JSON_KEYS(json_doc [, path])
  • json_doc: 要从中提取键名的 JSON 文档。
  • path: 可选参数,用于指定要提取键名的路径。如果省略,默认为根路径 "$"

示例

假设有一个表 users,其中有一个字段 data 存储了用户的 JSON 数据:

CREATE TABLE users (id INT PRIMARY KEY,data JSON
);INSERT INTO users (id, data) VALUES
(1, '{"name": "Alice", "age": 30, "city": "New York"}'),
(2, '{"name": "Bob", "age": 25, "city": "Los Angeles", "hobbies": ["reading", "traveling"]}');
示例 1: 获取 JSON 对象的所有键名
SELECT id, JSON_KEYS(data) AS keys
FROM users;

输出结果:

+----+-----------------------------------+
| id | keys                              |
+----+-----------------------------------+
| 1  | ["name", "age", "city"]           |
| 2  | ["name", "age", "city", "hobbies"]|
+----+-----------------------------------+
示例 2: 获取嵌套 JSON 对象的键名

假设 JSON 数据中包含嵌套的对象:

INSERT INTO users (id, data) VALUES
(3, '{"name": "Charlie", "age": 35, "address": {"street": "123 Main St", "city": "Chicago"}}');

我们可以提取嵌套对象 address 的键名:

SELECT id, JSON_KEYS(data, '$.address') AS address_keys
FROM users;

输出结果:

+----+---------------------+
| id | address_keys        |
+----+---------------------+
| 1  | NULL                |
| 2  | NULL                |
| 3  | ["street", "city"]  |
+----+---------------------+
示例 3: 获取 JSON 数组中的键名

假设 JSON 数据中包含一个数组,每个数组元素都是一个对象:

INSERT INTO users (id, data) VALUES
(4, '{"name": "David", "age": 40, "hobbies": [{"type": "reading", "level": "advanced"}, {"type": "traveling", "level": "intermediate"}]}');

我们可以提取数组 hobbies 中每个对象的键名:

SELECT id, JSON_KEYS(data, '$.hobbies[*]') AS hobbies_keys
FROM users;

输出结果:

+----+-----------------------------------+
| id | hobbies_keys                      |
+----+-----------------------------------+
| 1  | NULL                              |
| 2  | NULL                              |
| 3  | NULL                              |
| 4  | [["type", "level"], ["type", "level"]] |
+----+-----------------------------------+

注意事项

  • JSON_KEYS() 返回的结果是一个 JSON 数组,包含所有的键名。
  • 如果路径表达式指向的值不是一个 JSON 对象,JSON_KEYS() 将返回 NULL
  • 如果路径表达式指向的值不存在,JSON_KEYS() 也将返回 NULL

组合使用

JSON_KEYS() 通常与其他 JSON 函数结合使用,以便更灵活地处理 JSON 数据。例如,你可以先使用 JSON_KEYS() 获取键名,然后使用 JSON_EXTRACT() 提取特定的值。

SELECT id, JSON_KEYS(data) AS keys, JSON_EXTRACT(data, '$.name') AS name
FROM users;

输出结果:

+----+-----------------------------------+--------+
| id | keys                              | name   |
+----+-----------------------------------+--------+
| 1  | ["name", "age", "city"]           | "Alice"|
| 2  | ["name", "age", "city", "hobbies"]| "Bob"  |
| 3  | ["name", "age", "address"]        | "Charlie"|
| 4  | ["name", "age", "hobbies"]        | "David"|
+----+-----------------------------------+--------+

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/61367.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux的指令(三)

1.grep指令 功能: 在文件中搜索字符串,将找到的行打印出来 -i:忽略大小写的不同,所以大小写视为一样 -n:顺便输出行号 -v:反向选择,就是显示出没有你输入要搜索内容的内容 代码示例: roo…

2025蓝桥杯(单片机)备赛--扩展外设之DS1302的使用(九)

1.DS1302数据手册的使用 a. DS1302 features: 工作电压:2V-5.5V 通信协议:3线接口(CE、IO、SCLK) 计时:秒、分、小时、月日期、月、星期、年(闰年补偿器期至2100年) b.原理图接线说明&#xff…

Leetcode(滑动窗口习题思路总结,持续更新。。。)

讲解题目:长度最小的子数组 给定一个含有 n 个正整数的数组和一个正整数 target ,找出该数组中满足其和 ≥ target 的长度最小的连续子数组。如果不存在符合条件的连续子数组,返回 0。示例: 输入: target 7, nums [2,3,1,2,4,3] 输出: 2 解…

在CentOS中,通过nginx访问php

其实是nginx反向代理到php-fpm,就像nginx反向代理到tomcat。 1、安装PHP-FPM 1.1 安装 yum install php yum install php-fpm php-common 这里只安装了php-fpm,根据需要安装php模块,比如需要访问mysql则添加安装 php-mysqlnd。 1.2 启动…

Photino:通过.NET Core构建跨平台桌面应用程序,.net国产系统

一、Photino.NET简介: 最近发现了一个不错的框架 Photino.Net 一份代码运行,三个平台 windows max linux ,其中windows10,windows11,ubuntu 18.04,ubuntu 20.04 已测试均可以。mac 因为没有相关电脑没有测试。 github:https://github.com/t…

深度学习:神经网络的搭建

深度学习:神经网络的搭建 神经网络的搭建涉及多个步骤,从选择合适的网络架构到定义网络层、设置超参数以及最终的模型训练。下面我将详细介绍这些步骤,并提供一个具体的示例来展示如何使用PyTorch框架构建一个卷积神经网络(CNN&a…

编辑器vim 命令的学习

1.编辑器Vim 1.vim是一个专注的编辑器 2.是一个支持多模式的编辑器 1.1见一见: vim 的本质也是一条命令 退出来:-> Shift:q 先创建一个文件 再打开这个文件 进入后先按 I 然后就可以输入了 输入完后,保存退出 按Esc --> 来到最后一…

Ubuntu22.04LTS 部署前后端分离项目

一、安装mysql8.0 1. 安装mysql8.0 # 更新安装包管理工具 sudo apt-get update # 安装 mysql数据库,过程中的选项选择 y sudo apt-get install mysql-server # 启动mysql命令如下 (停止mysql的命令为:sudo service mysql stop&#xff0…

Python爬虫:如何从1688阿里巴巴获取公司信息

在当今的数字化时代,数据已成为企业决策和市场分析的重要资产。对于市场研究人员和企业分析师来说,能够快速获取和分析大量数据至关重要。阿里巴巴的1688.com作为中国最大的B2B电子商务平台之一,拥有海量的企业档案和产品信息。本文将介绍如何…

10 基于深度学习的目标检测

首次完成时间:2024 年 11月 20 日 1. 使用OpenCV的dnn模块实现图像分类。 1)程序代码: import numpy as np import cv2# 解析标签文件 row open("model1/synset_words.txt").read().strip().split("\n") class_label …

Spring WebFlux 高级实战(3-2)

1、SpringBoot 使用 1.1、Spring Core 中的响应式 Spring 生态系统的核心模块是Spring Core 模块。Spring 5.x 引入对响应式流和响应式库的原生支持,其中,响应式库包含RxJava 1/2 和Project Reactor 3。 1.1.1、响应式类型转换支持 为了支持响应式流规…

河道水位流量一体化自动监测系统:航运安全的护航使者

在广袤的水域世界中,航运安全始终是至关重要的课题。而河道水位流量一体化自动监测系统的出现,如同一位强大的护航使者,为航运事业的稳定发展提供了坚实的保障。 水位传感器:负责实时监测河道的水位变化。这些传感器通常采用先进的…

RHCE的学习(21)

第三章 Shell条件测试 用途 为了能够正确处理Shell程序运行过程中遇到的各种情况,Linux Shell提供了一组测试运算符。 通过这些运算符,Shell程序能够判断某种或者几个条件是否成立。 条件测试在各种流程控制语句,例如判断语句和循环语句中…

经验笔记:从生成 SSH 密钥到成功连接测试(以Gitee为例)

从生成 SSH 密钥到成功连接测试的经验笔记(以Gitee为例) 1. 生成 SSH 密钥对 选择合适的加密算法 ED25519: 密钥长度:私钥 256 位(32 字节),公钥 256 位(32 字节)&#…

uni-app Vue3语法实现微信小程序样式穿透uview-plus框架

1 问题描述 我在用 uni-app vue3 语法开发微信小程序时,在项目中使用了 uview-plus 这一开源 UI 框架。在使用 up-text 组件时,想要给它添加一些样式,之前了解到微信小程序存在样式隔离的问题,也在uview-plus官网-注意事项中找到…

数据结构(双向链表——c语言实现)

双向链表相比于单向链表的优势: 1. 双向遍历的灵活性 双向链表:由于每个节点都包含指向前一个节点和下一个节点的指针,因此可以从头节点遍历到尾节点,也可以从尾节点遍历到头节点。这种双向遍历的灵活性使得在某些算法和操作中&a…

C# AutoMapper 10个常用方法总结

前言 AutoMapper 是一个强大的对象映射库,用于简化和自动化复杂对象之间的转换。 官网地址:AutoMapper 文档地址:AutoMapper — AutoMapper documentation AutoMapper是以.NET(C#)语言开发的一个轻量的处理一个实体对象到另一个实体对象之间…

论文分享 | FuzzLLM:一种用于发现大语言模型中越狱漏洞的通用模糊测试框架

大语言模型是当前人工智能领域的前沿研究方向,在安全性方面大语言模型存在一些挑战和问题。分享一篇发表于2024年ICASSP会议的论文FuzzLLM,它设计了一种模糊测试框架,利用模型的能力去测试模型对越狱攻击的防护水平。 论文摘要 大语言模型中…

ES分词环境实战

文章目录 安装下载1.1 下载镜像1.2 单节点启动 防火墙设置异常处理【1】iptable链路中断 参考文档 参加完2024年11月软考,对ES的分词进行考查,前期有【 Docker 环境下安装部署 Elasticsearch 和 kibana】和【 Docker 环境下为 Elasticsearch 安装IK 分…

在 CentOS 系统上直接安装 MongoDB 4.0.25

文章目录 步骤 1:配置 MongoDB 官方源步骤 2:安装 MongoDB步骤 3:启动 MongoDB 服务步骤 4:验证安装步骤 5:可选配置注意事项 以下是在 CentOS 系统上直接安装 MongoDB 4.0.25 的详细步骤: 步骤 1&#x…