MySQL对JSON类型字段数据进行提取和查询的实现

MySQL对JSON类型字段的提取和查询,是MySQL 5.7及以上版本中的新增功能之一。JSON类型字段在存储结构上,采用的是变长字符串类型,表示的是JSON文本. 下面将会对此进行详细的介绍。

创建表格

首先,我们来创建一个名为users的表格,并在其中添加一个JSON类型字段数据示例,如下所示:

CREATE TABLE users (
id INT NOT NULL AUTO_INCREMENT,
name VARCHAR(50) NOT NULL,
info JSON,
PRIMARY KEY (id)
);

接着,我们插入一条数据,包含一个JSON字段,其中包含的是字符串键和值对,如下所示:

INSERT INTO users (name, info) VALUES (
    'Mike',
    '{"country": "China", "gender": "Male", "age": 25}'
);

提取JSON字段的值

为了提取JSON字段的值,我们采用的是MySQL提供的JSON_VALUE()函数。下面演示如何提取JSON字段的值:

SELECT 
    name, 
    JSON_VALUE(info, "$.age") AS age,
    JSON_VALUE(info, "$.gender") AS gender,
FROM users
WHERE id = 1;

结果如下:

| name | age | gender |
|------|-----|--------|
| Mike | 25  | Male   |

JSON_VALUE()函数使用的是XPath语法来指定要提取的JSON键的路径,"$"代表根目录,"$ . age"代表JSON字段中名为age的值。

JSON类型的条件查询

在MySQL 5.7中,可以使用JSON类型字段进行条件查询,MySQL提供了JSON_EXTRACT()和JSON_CONTAINS()函数来实现JSON查询功能。下面分别介绍这两个函数的作用。

JSON_EXTRACT()示例

JSON_EXTRACT()在JSON字段中提取路径所指定的值,只输入查询JSON字段,以及路径。下面是示例SQL查询,使用JSON_EXTRACT()从info字段中提取gender信息:

SELECT name, 
JSON_EXTRACT(info, '$.gender') AS gender 
FROM users 
WHERE gender = 'Male';

结果如下:

| name | gender |
|------|--------|
| Mike | Male   |

JSON_CONTAINS()示例

JSON_CONTAINS()函数可以实现以字段值为基础进行筛选的复杂条件查询。下面是一个示例,使用JSON_CONTAINS()来检查数据集是否包含指定值:

SELECT id, name, info 
FROM users 
WHERE JSON_CONTAINS(info, '"China"', '$.country');

结果如下:

| id | name | info                                                       |
|----|------|------------------------------------------------------------|
| 1  | Mike | {"country": "China", "gender": "Male", "age": "25"}        |

以上就是MySQL对JSON类型字段数据进行提取和查询的实现攻略,希望能够对您有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:MySQL对JSON类型字段数据进行提取和查询的实现 - Python技术站

(0)
上一篇 2023年6月25日
下一篇 2023年6月25日

相关文章

  • C语言修炼之路数据类型悟正法 解析存储定风魔上篇

    C语言修炼之路数据类型悟正法 解析存储定风魔上篇攻略 引言 C语言是一门经典的程序设计语言,操作系统、驱动程序、嵌入式开发等领域都广泛应用。C语言数据类型悟正法是C语言学习中的重要环节,本攻略从数据类型的本质和存储特点入手,系统解析C语言数据类型,以期对C语言有更深入的理解和认识。 常见数据类型 C语言的数据类型包括基本数据类型和派生数据类型两类。 基本数据…

    other 2023年6月27日
    00
  • Java中ArrayList与顺序表的概念与使用实例

    Java中ArrayList与顺序表的概念与使用实例 ArrayList的概念 在Java中,ArrayList是一个基于动态数组实现的List,可以自动扩容,也可以手动指定容量,保证数组中元素的有序性和存在性。 ArrayList在实现上,其底层是通过一个Object数组来实现的,而且ArrayList是有序的,可以通过整数值索引来查找元素,也可以通过Li…

    other 2023年6月27日
    00
  • VisualStudio常用标准控件功能介绍

    Visual Studio 是一个强大的集成开发环境(IDE),它支持多种编程语言,并内置了许多常用的控件以方便用户进行开发。在本文中,我将详细讲解 Visual Studio 中常用的标准控件以及它们的功能。 常用标准控件 Label 控件 Label 控件用于显示纯文本信息,可以设置前景色、背景色、字体大小等属性。以下是一个示例代码: Label lab…

    other 2023年6月27日
    00
  • 如何查看本机IP地址 查看本机IP地址的方法(图文教程)

    如何查看本机IP地址 本机IP地址是指计算机在网络中的唯一标识,它可以用于识别计算机在网络中的位置。下面是几种查看本机IP地址的方法。 方法一:使用命令提示符(Windows系统) 打开命令提示符。可以通过按下Win + R键,然后输入\”cmd\”并按下回车键来打开命令提示符。 在命令提示符中输入\”ipconfig\”并按下回车键。 在输出结果中找到\”…

    other 2023年7月30日
    00
  • oracle中将clob字段转换成字符串

    Oracle中将CLOB字段转换成字符串 在Oracle数据库中,CLOB(Character Large OBject)是一种用于存储大量字符数据的数据类型。CLOB类型的字段可以存储很大的文本、XML或图像数据,但是与VARCHAR2或RAW类型的数据不同,CLOB类型的数据不支持直接使用=或<>这类操作符进行比较操作。在很多时候,我们需要将…

    其他 2023年3月28日
    00
  • 你的电脑将在一分钟后自动重启如何解决 win8自动重启解决办法

    问题背景 Win8系统中,电脑会出现自动重启的情况,弹出提示框显示“你的电脑将在一分钟后自动重启”。这给用户带来了极大的不便,甚至导致数据丢失。那么如何解决Win8系统的自动重启问题呢?本文将为您提供完整攻略。 解决方法 方法一:取消自动重启 按下Win+R组合键,调出运行窗口,输入“gpedit.msc”并回车。 在“本地组策略编辑器”窗口中依次展开“计算…

    other 2023年6月27日
    00
  • Ubuntu中添加应用程序快速启动器的方法

    下面是完整的“Ubuntu中添加应用程序快速启动器的方法”攻略。 1. 打开“主菜单” 在Ubuntu的左侧“Dock栏”上,点击Ubuntu图标,打开“主菜单”。 2. 选择应用程序 在“主菜单”中,找到需要添加快速启动器的应用程序,选择该应用程序。 3. 复制应用程序的启动命令 在应用程序的菜单中,右击该应用程序并选择“添加到收藏夹”。然后打开“收藏夹”…

    other 2023年6月25日
    00
  • Java Big Number操作BigInteger及BigDecimal类详解

    Java Big Number操作BigInteger及BigDecimal类详解 什么是Java Big Number? 在Java中数据类型是有限的,例如int、long等,这些数据类型能够表示的数字范围是有限的。但是在实际应用中,有时候需要进行精确计算,需要使用更大范围的数据类型来描述整数和小数,这时就需要用到Java Big Number。 Java…

    other 2023年6月26日
    00
合作推广
合作推广
分享本页
返回顶部