MySQL读取JSON转换的方式

MySQL 5.7及以上版本支持JSON数据类型,但在某些场景下我们需要将JSON数据进行读取、转换或者查询,以满足业务需求。

以下是MySQL读取JSON转换的方式的完整攻略:

1. 查询JSON对象的属性

可以通过箭头运算符->->>JSON_EXTRACT函数查询JSON对象的属性。其中,->返回JSON属性的文本格式,->>JSON_EXTRACT()返回JSON属性的值。

-- 查询JSON对象中user属性的值
SELECT json->'$.user' as user FROM table;
SELECT json->>'$.user' as user FROM table;
SELECT JSON_EXTRACT(json, '$.user') as user FROM table;

2. 获取JSON属性个数

可以使用JSON_LENGTH函数获取JSON对象的属性个数。

-- 获取JSON对象属性个数
SELECT JSON_LENGTH(json) as length FROM table;

3. 查询JSON对象的属性并转换为行

可以使用JSON_TABLE函数将JSON对象的属性转换为行,进而达到检索、过滤、分组和联接等目的。

-- 将JSON对象中id、name属性转换为行
SELECT jt.id, jt.name FROM table, 
  JSON_TABLE(json, '$' COLUMNS(
    id INT PATH '$.id',
    name VARCHAR(50) PATH '$.name'
  )) as jt;

4. 更新JSON对象属性

可以使用->->>JSON_SETJSON_REPLACE函数来更新JSON对象的属性。

-- 更新user属性的值
UPDATE table SET json = JSON_SET(json, '$.user', 'updated user') WHERE id = 1;
UPDATE table SET json = JSON_REPLACE(json, '$.user', 'updated user') WHERE id = 1;
SET @json = (SELECT json FROM table WHERE id = 1);
SET @json = JSON_SET(@json, '$.user', 'updated user');
UPDATE table SET json = @json WHERE id = 1;

示例说明

以下分别以查询JSON对象、获取JSON对象属性个数两个场景为示例说明。

示例一:查询JSON对象

以查询JSON对象中score属性的值为例。假设有一张表user,其中有一列json存储了JSON格式的用户信息。

CREATE TABLE user (
  id INT PRIMARY KEY,
  json JSON
);

表中数据如下:

id json
1 {"name": "小明", "score": {"math": 90, "english": 80}}
2 {"name": "小红", "score": {"math": 85, "english": 95}}

现在我们需要查询id为1的用户的数学成绩,可以使用以下SQL语句:

SELECT json->'$.score.math' as score FROM user WHERE id = 1;

结果:

score
90

示例二:获取JSON对象属性个数

以获取JSON对象属性个数为例。假设有一张表obj,其中有一列json存储了JSON格式的数据。

CREATE TABLE obj (
  id INT PRIMARY KEY,
  json JSON
);

表中数据如下:

id json
1 {"name": "obj1", "age": 18}
2 {"name": "obj2", "gender": "male", "hobbies": ["reading", "running", "swimming"]}

现在我们需要查询每条数据的属性个数,可以使用以下SQL语句:

SELECT id, JSON_LENGTH(json) as length FROM obj;

结果:

id length
1 2
2 3

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL读取JSON转换的方式 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • 使用MyBatis进行数据库映射的方式

    使用MyBatis进行数据库映射的方式可以分为以下几个步骤: 步骤一:添加MyBatis依赖 我们需要在项目中添加MyBatis的依赖,可以通过以下方式在pom.xml文件中添加: <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis&l…

    Java 2023年5月20日
    00
  • spring-boot-autoconfigure模块用法详解

    Spring Boot Autoconfigure 模块用法详解 在本文中,我们将详细讲解 Spring Boot Autoconfigure 模块的用法。我们将使用 Spring Boot 2.5.0 版本的源码进行分析。 什么是 Spring Boot Autoconfigure 模块? Spring Boot Autoconfigure 模块是 Spr…

    Java 2023年5月15日
    00
  • 详解Java中$符的各种使用场景

    下面是“详解Java中$符的各种使用场景”的完整攻略。 1. $符在Java中的基本用法 $符在Java中可以用作标识符的一部分,可以表示变量名或方法名等。在变量名或方法名中使用$符时需要注意以下几点: $符不能作为变量或方法名的开头,否则会导致编译错误。 $符不建议作为变量或方法名的一部分,因为这样会使代码可读性降低。 举个例子: int a$ = 1; …

    Java 2023年5月19日
    00
  • SpringBoot yaml语法与JRS303校验超详细讲解

    下面我就给你介绍一下Spring Boot中的yaml语法和JRS303校验的全面攻略。 一、Spring Boot yaml语法 1.1 简介 在Spring Boot项目中,我们可以通过yaml语法来配置项目相关信息。yaml是一种人类可读的数据序列化格式,而且在Spring Boot中默认使用了yaml作为配置文件的语法。相比于xml和properti…

    Java 2023年5月19日
    00
  • 浅谈.html,.htm,.shtml,.shtm的区别与联系

    下面是详细讲解“浅谈.html,.htm,.shtml,.shtm的区别与联系”的攻略: 标准的HTML文件格式 HTML(Hypertext Markup Language)是用来编写网页的标准语言,而 “.html” 或 “.htm” 文件就是标准的 HTML 文件格式。这两种格式本质上是没有区别的,只不过后缀名的不同。一些 Web 服务器或操作系统在默…

    Java 2023年6月15日
    00
  • 详解SpringBoot Starter作用及原理

    Spring Boot Starter是一种用于简化Spring Boot应用程序开发的工具,它提供了一种快速启动应用程序的方式,使得开发者可以更加专注于业务逻辑的实现。在本攻略中,我们将介绍Spring Boot Starter的作用及原理,并提供两个示例来说明其用法。 以下是两个示例,介绍Spring Boot Starter的用法: 示例一:使用Spr…

    Java 2023年5月15日
    00
  • Java函数式编程(五):闭包

    让我们来详细讲解“Java函数式编程(五):闭包”。 什么是闭包 闭包是指一个函数能够记住并访问其词法作用域中的变量,即使在函数被定义之后,该词法作用域中的变量已经不存在了。通俗的说,就是在内部函数中引用了外部函数的变量,这个内部函数就是闭包。 闭包的应用 闭包的应用有很多,比如可以用来模拟类(JavaScript),可以用来实现许多设计模式(比如命令模式、…

    Java 2023年5月26日
    00
  • Maven入门教程之如何在idea中配置Maven

    首先,我们需要确保已经安装了Maven和IntelliJ IDEA。 接下来,按照以下步骤配置Maven: 步骤一:在IntelliJ IDEA中创建一个新的Maven项目 打开IntelliJ IDEA,点击“Create New Project”。 在左侧面板中选择“Maven”。 在右侧面板中选择“Create from archetype”。 在下拉…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部