MySQL json相关函数及功能详解

 更新时间:2023年11月09日 11:49:29   作者:唯丹之心  
MySQL提供了一系列的JSON函数,用于解析、提取、修改和操作JSON数据,以下是一些常用的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数组

可以在INSERT或UPDATE语句中使用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='王二麻子';

到此这篇关于MySQL json相关函数详解的文章就介绍到这了,更多相关MySQL json相关函数内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • MySQL gh-ost DDL 变更工具的实现

    MySQL gh-ost DDL 变更工具的实现

    本文主要介绍了MySQL gh-ost DDL变更工具的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-02-02
  • MySql 5.6.36 64位绿色版安装图文教程

    MySql 5.6.36 64位绿色版安装图文教程

    这篇文章主要介绍了MySql 5.6.36 64位绿色版安装图文教程,需要的朋友可以参考下
    2017-05-05
  • mysql的联合索引(复合索引)的实现

    mysql的联合索引(复合索引)的实现

    这篇文章主要介绍了mysql的联合索引(复合索引)的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 高性能MySQL读书笔记 找出谁持有锁

    高性能MySQL读书笔记 找出谁持有锁

    周末重读了一遍《高性能MySQL》,发现有些知识点看过便忘了,没有实际动手操作一遍就是记不牢,所以今天动手操作了一下“找出谁持有锁”,并把实验步骤记录下来,有兴趣的网友可以参照一二。
    2011-01-01
  • Mysql中 IFNULL函数的使用详解

    Mysql中 IFNULL函数的使用详解

    IFNULL()函数在MySQL中用来检查第一个表达式是否为NULL,非NULL则返回第一个值,否则返回第二个值,本文就来详细的介绍一下如何使用,感兴趣的可以了解一下
    2024-09-09
  • windows下安装mysql-8.0.18-winx64的教程(图文详解)

    windows下安装mysql-8.0.18-winx64的教程(图文详解)

    这篇文章主要介绍了windows下安装mysql-8.0.18-winx64,需要的朋友可以参考下
    2019-12-12
  • Navicat数据存放位置和备份数据库路径设置方式

    Navicat数据存放位置和备份数据库路径设置方式

    这篇文章主要介绍了Navicat数据存放位置和备份数据库路径设置方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01
  • MySQL 5.7增强版Semisync Replication性能优化

    MySQL 5.7增强版Semisync Replication性能优化

    这篇文章主要介绍了MySQL 5.7增强版Semisync Replication性能优化,本文着重讲解支持发送binlog和接受ack的异步化、支持在事务commit前等待ACK两项内容,需要的朋友可以参考下
    2015-05-05
  • 一文搞懂什么是MySQL前缀索引

    一文搞懂什么是MySQL前缀索引

    所谓前缀索引,说白了就是对文本的前几个字符建立索引,有点类似于 Oracle 中对字段使用 Left 函数来建立函数索引,只不过 MySQL 的这个前缀索引在查询时是内部自动完成匹配的。本文将通过示例详细聊聊前缀索引,需要的可以参考一下
    2022-09-09
  • MySQL解决Navicat设置默认字符串时的报错问题

    MySQL解决Navicat设置默认字符串时的报错问题

    本文主要介绍了MySQL解决Navicat设置默认字符串时的报错,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06

最新评论