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

yizhihongxing

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日

相关文章

  • 解决Android studio Error:(30, 31) 错误: 程序包 不存在的问题

    解决Android Studio中程序包不存在的问题攻略 当在Android Studio中遇到程序包不存在的错误时,可以按照以下步骤进行排查和解决: 检查依赖库的引用:首先,确保你的项目中正确引用了所需的依赖库。在项目的build.gradle文件中,检查dependencies部分是否包含了正确的依赖库引用。例如: groovy dependencies…

    other 2023年10月13日
    00
  • 9个顶级开发iot项目的开源物联网平台

    9个顶级开发IoT项目的开源物联网平台 在现代工业和农业中,物联网(IoT)技术已经被广泛使用。为了实现更智能、可靠和高效的物联网解决方案,需要一个强大的物联网平台。在本文中,我们将介绍9个顶级的开源物联网平台,这些平台可以帮助开发人员快速搭建物联网系统,从而实现更好的智能化管理和控制。 1. Eclipse IoTS Wapama Eclipse IoTS…

    其他 2023年3月29日
    00
  • 关于utf8:将utf-8转换为ascii

    以下是关于“将UTF-8转换为ASCII”的完整攻略,过程中包含两个示例。 背景 在编程中,有时需要将UTF-8编码的字符串转换为ASCII编码的字符串。本攻略将介绍如何将UTF-8编码的字符串转换为ASCII编码的字符串。 基本原理 在Python中,可以使用encode()方法将UTF-8编码的字符串转为字节数组,然后使用decode()方法将字节数组转…

    other 2023年5月9日
    00
  • Android简单使用PopupWindow的方法

    Android简单使用PopupWindow的方法攻略 PopupWindow是Android中常用的弹出窗口控件,可以在屏幕上方或下方显示一个浮动的视图。下面是使用PopupWindow的详细步骤和示例说明。 步骤一:创建PopupWindow布局文件 首先,我们需要创建一个PopupWindow的布局文件。在res/layout目录下创建一个名为popu…

    other 2023年8月25日
    00
  • JavaScript 双向链表操作实例分析【创建、增加、查找、删除等】

    下面就是 JavaScript 双向链表的完整攻略: 什么是双向链表 双向链表是一种链式数据结构,每个节点都包含两个指向前后节点的指针。相对于单向链表,双向链表可以在 O(1) 时间复杂度下进行前后节点的查找、插入、删除等操作。 双向链表的结构 Node: 双向链表的节点,包含三个属性 data: 存储节点的数据 prev: 指向前一个节点的指针 next:…

    other 2023年6月27日
    00
  • Python基础之变量基本用法与进阶详解

    Python基础之变量基本用法与进阶详解 变量基本用法 在Python中,变量是用来存储数据的容器。使用变量可以方便地引用和操作数据。下面是变量的基本用法: 变量的定义和赋值 在Python中,可以使用等号(=)来定义和赋值变量。变量名可以是任意合法的标识符,但不能以数字开头。 # 定义一个整数变量 num = 10 # 定义一个字符串变量 name = \…

    other 2023年8月9日
    00
  • 跟进家庭版,Win11专业版将强制用户创建微软账户来进行系统初始化设置

    跟进家庭版,Win11专业版将强制用户创建微软账户来进行系统初始化设置是指,在Win11专业版和家庭版中,用户在安装系统后必须要创建一个Microsoft账户来完成系统初始化设置。 下面,将详细讲解该攻略的操作步骤: 1. 安装Win11专业版或家庭版 首先,需要在计算机上安装Win11专业版或家庭版操作系统。 2. 进入设置菜单 在电脑桌面上,点击任务栏上…

    other 2023年6月20日
    00
  • Linux系统中的mount挂载磁盘命令使用教程

    Linux系统中的mount挂载磁盘命令使用教程 1. 前言 Linux系统下的mount命令用于挂载文件系统,主要用于将文件系统关联到指定的某个目录下,方便用户对该文件系统进行操作。本文将详细介绍Linux系统中mount挂载磁盘的操作,供初学者参考。 2. mount命令的基本语法 mount挂载命令的基本语法如下: mount [-t 文件系统类型] …

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