MySQL json相关函数详解

MySQL提供了一系列的JSON函数,用于解析、提取、修改和操作JSON数据。以下是一些常用的JSON函数及其功能。

以下所有操作都使用该表(zone_test)用来演示:

一:JSON_OBJECT(key1,value1,key2,value2)

        1、作用:

                用来创建一个JSON对象。可以指定键值对作为参数,返回一个JSON对象。

                键和值可以是字符串、数字、布尔值等。

        2、使用:

                创建一个JSON对象: 

             可以在INSERTUPDATE语句中使用JSON_OBJECT()函数来插入或更新JSON字段的值:

INSERT INTO zone_test (name,age,drss_style) VALUES('clothes': '卫衣', 'hat': '棒球帽', 'trousers': '牛仔裤', 'shoe': '板鞋'))

 

二:JSON_ARRAY(value,value1,value2)

        1、作用:

                创建一个JSON数组。可以指定多个值作为参数,返回一个JSON数组。

                值可以是字符串、数字、布尔值等。

        2、使用:

                创建一个JSON数组

              可以在INSERTUPDATE语句中使用JSON_ARRAY()函数来插入或更新JSON字段的值

INSERT INTO zone_test (name,age,drss_style,girl_friend) VALUES('王二麻子',48,JSON_OBJECT('帽子','棒球帽'),JSON_ARRAY('小红','小黄','小紫'))

三:JSON_EXTRACT(json_doc, path)

        1、作用:

                从JSON文档中提取指定路径的值。

                json_doc是JSON文档,path是要提取的JSON键的路径。

                请注意,JSON键的路径必须用引号括起来,并且路径的开始必须是$

        2、使用:

                例如:我想要知道所有人的帽子都是什么?

          SELECT name,JSON_EXTRACT(drss_style, '$.hat') as hat from zone_test

 

四: JSON_SET(json_doc, path, value)

        1、作用:

                 设置JSON文档中指定路径的值。

                 如果路径存在,则替换现有的值;如果路径不存在,则添加新的键值对

                 请注意,JSON键的路径必须用引号括起来,并且路径的开始必须是$

        2、使用:

                例如:我想把李四的帽子改成“草帽”。

UPDATE zone_test SET drss_style = JSON_SET(drss_style,'$.hat','草帽') where name ='李四'

五: JSON_INSERT(json_doc, path, value)

        1、作用:

                在JSON文档中指定路径处插入一个新的键值对。

                如果路径存在,则插入新的键值对;如果路径不存在,则不做任何操作

                请注意,JSON键的路径必须用引号括起来,并且路径的开始必须是$

        2、使用:

                例如:我想再drss_style新增一个新的键值对,手表。

        UPDATE zone_test SET drss_style = JSON_INSERT(drss_style,'$.watch','华为手表') 

六:JSON_REMOVE(json_doc, path)

        1、作用:

                从JSON文档中删除指定路径的键值对。

                如果路径存在,则删除指定的键值对;如果路径不存在,则不做任何操作。

        2、使用:

                例如:我想删除王二麻子的watch这个键值对。

UPDATE zone_test SET drss_style = JSON_REMOVE(drss_style,'$.watch') where name='王二麻子'

七: JSON_REPLACE(json_doc, path, value)

        1、作用:

                替换JSON文档中指定路径的值。

                如果路径存在,则替换现有的值;如果路径不存在,则不做任何操作
                【跟JSON_SET的区别:json_set如果路径不存在,就新增】

        2、使用:

                例如:修改王二麻子的帽子跟手表这2项

UPDATE zone_test SET drss_style = JSON_REPLACE(drss_style,'$.watch','小米手表') where name='王二麻子';
UPDATE zone_test SET drss_style = JSON_REPLACE(drss_style,'$.hat','太阳帽') where name='王二麻子';

 

八: JSON_ARRAY_APPEND(json_doc, path, value)

        1、作用:

                在JSON文档中指定路径处的数组末尾追加一个新的值。

                如果路径存在且是一个数组,则在数组末尾追加新的值;

                如果路径不存在或不是一个数组,则不做任何操作。

        2、使用:

                例如:在boy_friend里追加一个数据

UPDATE zone_test SET drss_style = JSON_ARRAY_APPEND(drss_style,'$.boy_friend','吴磊') where name='王二麻子'; 

 

九: JSON_ARRAY_INSERT(json_doc, path, value)

        1、作用:

                在JSON文档中指定路径处的数组中插入一个新的值。

                如果路径存在且是一个数组,则在指定索引处插入新的值;

                如果路径不存在或不是一个数组,则不做任何操作。

        2、使用:

                例如:在霍建华跟吴磊中间插入一个黄凯。

UPDATE zone_test SET drss_style = JSON_ARRAY_INSERT(drss_style,'$.boy_friend[2]','黄凯') where name='王二麻子'; 

 

十:JSON_ARRAY_REMOVE(json_doc, path)

        1、作用:

                从JSON文档中指定路径处的数组中删除一个值。

                如果路径存在且是一个数组,并且指定的索引处有一个值,则删除该值;

                如果路径不存在或不是一个数组,或者指定的索引处没有值,则不做任何操作。

        2、使用:

                例如:把boy_friend里的霍建华删除掉。

UPDATE zone_test SET drss_style = JSON_ARRAY_REMOVE(drss_style,'$.boy_friend[1]') where name='王二麻子'; 

 

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

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

相关文章

json数据格式的理解(前+后)

什么是JSON: JSON(JavaScript Object Notation)是一种广泛使用的数据交换格式,它在前端和后端开发中都扮演着重要的角色。 JSON 的结构: JSON 数据由大括号 {} 包围,表示对象。 对象中的数据以键值对形式…

【C/PTA】循环结构进阶练习(三)

本文结合PTA专项练习带领读者掌握循环结构,刷题为主注释为辅,在代码中理解思路,其它不做过多叙述。 文章目录 7-1 循环-Fibonacci数列的运算7-2 循环-找数字7-3 循环-小智的捕食计划7-4 循环-抱大腿7-5 循环-跳!7-6 循环-生气的峰…

Docker学习——⑤

文章目录 1、什么是Docker Container(容器)2、容器的生命周期2.1 容器 OOM2.2 容器异常退出2.3 容器暂停 3、容器命令详解4、容器操作案例4.1 容器批量处理技巧4.2 容器交互模式4.3 容器自动重启4.4 容器环境变量配置 5、综合实战5.1 Mysql 容器化安装5.…

〔003〕虚幻 UE5 基础教程和蓝图入门

✨ 目录 ▷ 新建项目▷ 快捷操作▷ 镜头移动速度▷ 新建蓝图关卡▷ 打印字符串▷ 蓝图的快捷键▷ 场景中放置物体▷ 通过蓝图改变物体位置▷ 展现物体运动轨迹▷ 队列运行▷ 新建项目 打开虚幻启动程序,选择 引擎版本 后点击 启动选择 游戏 类型,默认设置中选择 蓝图,项目名…

C# winform 定时器

1.加入Timer using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms;namespace Te…

基于Fuzzing和ChatGPT结合的AI自动化测试实践分享

一、前言 有赞目前,结合insight接口自动化平台、horizons用例管理平台、引流回放平台、页面比对工具、数据工厂等,在研发全流程中,已经沉淀了对应的质量保障的实践经验,并在逐渐的进化中。 在AI能力大幅进步的背景下&#xff0c…

挑战100天 AI In LeetCode Day03(热题+面试经典150题)

挑战100天 AI In LeetCode Day03(热题面试经典150题) 一、LeetCode介绍二、LeetCode 热题 HOT 100-52.1 题目2.2 题解 三、面试经典 150 题-53.1 题目3.2 题解 一、LeetCode介绍 LeetCode是一个在线编程网站,提供各种算法和数据结构的题目&am…

MySQL基础操作

注:mysql是大小写不敏感的. 1.数据库基础操作(展示) //1.展示当前数据库 show databases;//2.创建数据库 create database 数据库名;//3.使用数据库 use 数据库名;//4.删除数据库 drop database 数据库名;2.SQL中基本类型 2.1 数值类型(整数和浮点型) 注:decimal和numeric…

在Kotlin中设置User-Agent以模拟搜索引擎爬虫

前言 随着双十一电商活动的临近,电商平台成为了狂欢的中心。对于商家和消费者来说,了解市场趋势和竞争对手的信息至关重要。在这个数字时代,爬虫技术成为了获取电商数据的有力工具之一。本文将以亚马逊为例,介绍如何使用Kotlin编…

第22章_数据库的设计规范

文章目录 范式的概念三范式范式一范式二范式三 反范式总结 范式的概念 为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库&#xff…

系列一、Spring + SpringMVC + MyBatis整合

一、概述 整合 Spring、SpringMVC、MyBatis。 二、整合步骤 2.1、pom <dependencies><!-- 普通maven项目中使用Sl4j注解 --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1…

【JVM】运行时数据区、程序计数器

&#x1f40c;个人主页&#xff1a; &#x1f40c; 叶落闲庭 &#x1f4a8;我的专栏&#xff1a;&#x1f4a8; c语言 数据结构 javaEE 操作系统 Redis 石可破也&#xff0c;而不可夺坚&#xff1b;丹可磨也&#xff0c;而不可夺赤。 JVM 一、 运行时数据区二、 程序计数器程序…

关于 pthread_create 传参的疑问

对于函数原型 int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg) 里的参数 arg&#xff0c;之前一直有疑问&#xff0c;就是把 &thread 传给 arg时&#xff0c;新创建的线程里是否能取到这个值呢&#xff1…

macOS电池续航工具:Endurance中文

Endurance for Mac是一款强大而实用的电池管理和优化软件&#xff0c;专为MacBook设计。通过智能调整系统设置和管理后台应用&#xff0c;它能有效延长电池续航时间&#xff0c;提升工作和娱乐效率&#xff0c;成为你在各种场合下的得力助手。 Endurance for Mac软件的功能特色…

国网计算机类2024年最新考试大纲国家电网大纲

今年的专业部分变化较大&#xff0c;关注社长的早在很久前就知道会新增科目&#xff0c;新增科目的对应题库讲义已经编写完成&#xff0c;有需要的学弟可以后台私信我 欢迎大家后台私信咨询~ 公共部分没有变化&#xff0c;考点跟每年一样&#xff0c;考试临近如果时间充足备考…

OpenCV(opencv_apps)在ROS中的视频图像的应用(重点讲解哈里斯角点的检测)

1、引言 通过opencv_apps&#xff0c;你可以在ROS中以最简单的方式运行OpenCV提供的许多功能&#xff0c;也就是说&#xff0c;运行一个与功能相对应的launch启动文件&#xff0c;就可以跳过为OpenCV的许多功能编写OpenCV应用程序代码&#xff0c;非常的方便。 对于想熟悉每个…

JVM之jps虚拟机进程状态工具

jps虚拟机进程状态工具 1、jps jps&#xff1a;(JVM Process Status Tool)&#xff0c;虚拟机进程状态工具&#xff0c;可以列出正在运行的虚拟机进程&#xff0c;并显示虚拟机执 行主类&#xff08;Main Class&#xff0c;main()函数所在的类&#xff09;的名称&#xff0c…

MCU系统的调试技巧

MCU系统的调试技巧对于确保系统稳定性和性能至关重要。无论是在嵌入式系统开发的初期阶段还是在产品维护和优化的过程中&#xff0c;有效的调试技巧可以帮助开发人员快速发现和解决问题&#xff0c;本文将讨论一些MCU系统调试的技巧。 首先&#xff0c;使用调试工具是非常重要…

神经网络可视化:卷积核可视化

文章目录 前言一般过程&#xff1a; 一、代码示例二、卷积核和输入图片相乘可视化总结 前言 卷积核可视化是一种用于理解卷积神经网络 (CNN) 中卷积层的工作原理和特征提取能力的方法。通过可视化卷积核&#xff0c;我们可以观察卷积层学习到的特征模式&#xff0c;帮助我们理…

CSS 网页布局

网页布局有很多种方式&#xff0c;一般分为以下几个部分&#xff1a;头部区域、菜单导航区域、内容区域、底部区域&#xff1a; 1&#xff09;、头部区域位于整个网页的顶部&#xff0c;一般用于设置网页的标题或者网页的logo。 <style> body { margin: 0; } /* 头部样…