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='王二麻子'; 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

​软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】​

软考-高级-系统架构设计师教程(清华第2版)【第1章-绪论-思维导图】 课本里章节里所有蓝色字体的思维导图

Read Completion Boundary (RCB)切分规则

Read Completion Boundary(RCB) 切分规则 Read Completion Boundary(RCB) 简介 当Read Completion 包含multi-completions时,RCB 规定了多个Completions地址的align规则。Spec中规定RCB可以是64 Byte或者128 Byte,该值可以在link_control register中得…

Unity随笔:C#运行时

Unity是如何编译运行C#的 (1)Unity会通过编译器将C#脚本编译成IL指令。 Unity会通过Roslyn来对C#代码进行编译,生成中间IL指令集。 当我们每次修改或者添加新的C#代码文件,Unity界面的右下角会出现短暂的“转圈”现象。这就意味…

PTE-RA总结

目录 FIBW刷题记录 1.The Plains Indians were people who did not like 2.An economic depression is a period of sustained 3.Pidgins are languages that are born after contact between 4.It is tempting to try to prove that good looks 5.The stock of Austral…

chrome安装vue devtools

不能访问应用商店 如果可以访问应用商店可以往下看 插件源代码 选择shell-chrome,这是官方的插件源码 下载源代码打包 参考教程 点击扩展按钮->管理扩展程序->打开开发者模式->把crx文件拖拽进去即可 可以访问chrome应用商店 插件地址 官方文档地址 选…

15.数组逆置【不是为啥我第四行不太对呢?】

#include<stdio.h>int fun(int a[4][4]){int i,j;int b[4][3];} int main(){int i,j;int a[3][4], b[4][3];for (i0;i<3;i)for(j0;j<4;j)scanf("%d",&a[i][j]);for (i0;i<3;i)for(j0;j<4;j)b[j][i]a[i][j];printf("逆置后&#xff1a;\n&…

Voice Control for ChatGPT简单高效的与ChatGPT进行交流学习。

快捷又不失灵活性 日常生活中&#xff0c;我们与亲人朋友沟通交流一般都是喜欢语音的形式来完成的&#xff0c;毕竟相对于文字来说语音就不会显的那么的苍白无力&#xff0c;同时最大的好处就是能解放我们的双手吧&#xff0c;能更快实现两者间的对话&#xff0c;沟通便更高效…

STM32 堆栈空间分布

参考 运行时访问__initial_sp和__heap_base 无RTOS时的情况 在以上配置的情况下&#xff0c;生成工程。在工程的startup.s文件中&#xff0c;由如下代码&#xff1a; Stack_Size EQU 0x400AREA STACK, NOINIT, READWRITE, ALIGN3 __Stack_top ; 自己添加 Stack_Mem…

MySQL代码子查询续集

dept表&#xff1a; emp表&#xff1a; -- 查询每个部门的信息(包括&#xff1a;部门名&#xff0c;编号&#xff0c;地址)和人员数量 -- 1.将两张表结合起来&#xff0c;筛选出部门名&#xff0c;编号&#xff0c;地址 tips: 表.* 表示将该表所有列都显示出来&#xff…

获取请求IP以及IP解析成省份

某些业务需要获取请求IP以及将IP解析成省份之类的&#xff0c;于是我写了一个工具类&#xff0c;可以直接COPY /*** IP工具类* author xxl* since 2023/11/9*/ Slf4j public class IPUtils {/*** 过滤本地地址*/public static final String LOCAL_ADDRESS "127.0.0.1&quo…

VUE获取当前日期的周日和周六

<template><div><div @click="handleLast()">上一周</div><div @click="handleNext()">下一周</div><el-calendarref="monChild"v-model="value":first-day-of-week="7":range=&q…

React进阶之路(二)-- 组件通信、组件进阶

文章目录 组件通信组件通信的意义父传子实现props说明子传父实现兄弟组件通信跨组件通信Context通信案例 React组件进阶children属性props校验组件生命周期 组件通信 组件通信的意义 组件是独立且封闭的单元&#xff0c;默认情况下组件只能使用自己的数据&#xff08;state&a…

2022年接口测试总结【温故知新系列】

本文主要分为两个部分&#xff1a; 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的区别与联系。但该部分只交代了怎么做和如何做&#xff1f;并没有解释为什么要做&#xff1f; 第二部分&#xff1…

Spring Gateway基础知识总结

本文主要总结Spring Gateway的基础用法&#xff0c;内容包括网关、Spring Gateway工作流程、Spring Cloud Gateway搭建、路由配置方式、负载均衡实现、断言工厂这几个部分 目录 1. 网关 1.1 网关介绍 1.2 网关对比 1.3 Spring Gateway 1.4 核心概念 1.6 总结 2. Spring …

什么GAN生成对抗网络?生成对抗网络可以干什么?

生成对抗网络(Generative Adversarial Nets,简称GAN)。神经网络分很多种,有普通的前向传播网络,有分析图片的CNN卷积神经网络,有分析系列化数据比如语言、文字的RNN循环神经网络,这些神经网络都是用来输入数据,得到想要的结果,我们看中的是这些神经网络中很好地将数据与…

SpringCloud——消息总线——Bus

1.什么是总线&#xff1f; 我们在微服务的项目中&#xff0c;通常会构建一个共同的消息主题&#xff0c;然后需要的服务可以连接上来&#xff0c;该主题中产生的消息会被监听和消费&#xff0c;这种我们称为消息总线。 SpringCloud Bus 配合SpringCloud Config使用可以实现配置…

RestTemplate配置和使用

在项目中&#xff0c;如果要调用第三方的http服务&#xff0c;就需要发起http请求&#xff0c;常用的请求方式&#xff1a;第一种&#xff0c;使用java原生发起http请求&#xff0c;这种方式不需要引入第三方库&#xff0c;但是连接不可复用&#xff0c;如果要实现连接复用&…

基础课26——业务流程分析方法论

基础课25中我们提到业务流程分析方法包括以下几种&#xff1a; 价值链分析法&#xff1a;主要是找出或设计出哪些业务能够使得客户满意&#xff0c;实现客户价值最大化的业务流程。要进行价值链分析的时候可以从企业具体的活动进行细分&#xff0c;细分的具体方面可以从生产指…

运行springboot时提示:源值 7 已过时,将在未来版本中删除,并且提示java.time not exist, LocaDateTime类找不到。

运行springboot时提示&#xff1a;源值 7 已过时&#xff0c;将在未来版本中删除&#xff0c;并且提示 java.time not exist, LocaDateTime类找不到。 解决方法&#xff1a; 方式一&#xff1a;通过IDEA修改这几个地方的JDK版本 1&#xff09;打开ProjectStructure->Proj…

多篇论文介绍-Wiou

论文地址 目录 https://arxiv.org/pdf/2301.10051.pdf 01 CIEFRNet&#xff1a;面向高速公路的抛洒物检测算法 02改进 YOLOv5 的 PDC 钻头复合片缺损识别 03 基于SimAM注意力机制的DCN-YOLOv5水下目标检测 04 基于改进YOLOv7-tiny 算法的输电线路螺栓缺销检测 05 基于改…