mysql8.0 JSON_CONTAINS的使用说明

mysql8.0 JSON_CONTAINS函数详解

简介

JSON_CONTAINS()函数用于检查是否存在指定JSON值。在MySQL8.0中,可以用该函数判断JSON数组或对象是否包含某个JSON值。

该函数返回值boolean类型,如果待查找的JSON存在于目标JSON中,则返回1,否则返回0。

JSON_CONTAINS()函数的完整语法如下:

JSON_CONTAINS(json_doc, json_value, [path])

其中,json_doc是需要查询的JSON,json_value是要查找的JSON值,path是可选参数,表示待查询JSON的路径。

示例1

比如有一个students表,存储了学生的姓名和选修的课程。

CREATE TABLE students (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    courses JSON
);

INSERT INTO students (name,courses) VALUES
  ('John', '["Biology","Chemistry","Math"]'),
  ('Alice','["Computer Science","Math","Physics"]'),
  ('Bob',  '["Biology","Geology","Economics"]');

需要查询选修了Math课程的学生有哪些,运用JSON_CONTAINS()函数可以写出如下SQL:

SELECT * FROM students WHERE JSON_CONTAINS(courses, '"Math"');

结果:

+----+-------+-----------------------------+
| id | name  | courses                     |
+----+-------+-----------------------------+
| 1  | John  | ["Biology","Chemistry","Math"] |
| 2  | Alice | ["Computer Science","Math","Physics"]|

通过SQL运用JSON_CONTAINS()函数查找JSON数组中是否包含某个元素,实现了查找JSON中的值,可以方便的对JSON进行操作。

示例2

比如有一个person表,存储了人员信息和他们的工作经历,其中工作经历是一个JSON对象。

CREATE TABLE person (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    job_history JSON
);

INSERT INTO person (name,job_history) VALUES
  ('John', '{"company":"Microsoft","title":"Engineer","duration":2}'),
  ('Alice','{"company":"IBM","title":"Manager","duration":5}'),
  ('Bob',  '{"company":"Google","title":"Developer","duration":3}');

需要查询工作经历中曾经在Microsoft公司工作的人员,用JSON_CONTAINS()函数可以写出如下SQL:

SELECT * FROM person WHERE JSON_CONTAINS(job_history, '{"company":"Microsoft"}');

结果:

+----+------+------+-----------------------------------------------------+
| id | name | job_history                                           |
+----+------+------+-----------------------------------------------------+
| 1  | John | {"company":"Microsoft","title":"Engineer","duration":2} |

这个例子中,查询的是JSON对象是否包含某元素,实现了查找JSON对象中的值。

关于MySQL8.0中JSON_CONTAINS()函数的基础使用,相信通过以上示例可以相对地清晰理解了。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:mysql8.0 JSON_CONTAINS的使用说明 - Python技术站

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

相关文章

  • C++ const的各种用法详解

    C++ const的各种用法详解 1. const基本用法 在C++中,const关键字用于修饰变量或函数返回值,表示该变量或返回值是一个不可更改的常量。 定义一个const变量的语法形式如下: const 数据类型 变量名 = 初始值; 例如,定义一个const整型变量a,初始值为10: const int a = 10; 定义完后,a不能被再次修改。 函…

    C 2023年5月22日
    00
  • C++中this指针的用法及介绍

    针对“C++中this指针的用法及介绍”,我来为您进行详细的讲解与示范。 什么是this指针? 在C++中,this指针是一个指向当前对象的指针。简单来说,就是指向当前对象实例,即类的一个具体对象。通过this指针可以访问对象的属性、方法等。 this指针的用途 this指针的主要作用是用于区分同名的类参数和成员变量。如果类的成员变量与类的参数同名,则可以使…

    C 2023年5月22日
    00
  • Objective-C Json 实例详解

    Objective-C Json 实例详解 什么是JSON? JSON是一种轻量级的数据交换格式,它是基于JavaScript对象语法的子集,易于人们理解和编写,也易于计算机解析和生成。在近年来的web开发中,JSON已经成为前后端数据交互最常用的格式之一。 使用Objective-C解析JSON 在Objective-C中,解析JSON非常方便,可以使用系…

    C 2023年5月23日
    00
  • C语言实现点菜系统

    C语言实现点菜系统 本攻略将介绍如何使用C语言实现一个简单的点菜系统。在这个系统中,顾客可以浏览菜单,选择自己的菜品并计算价格。系统则会输出选择的菜品及总价。 基本思路 定义菜单。菜单的定义可以采用数组的方式实现,每个元素代表一道菜品,包括名称和价格。 展示菜单。通过循环遍历数组,输出所有菜品名称及价格。 用户选择菜品。通过让用户输入菜品的编号,实现选择菜品…

    C 2023年5月23日
    00
  • makefile如何调用静态库的方法实现

    下面我会详细讲解makefile如何调用静态库的方法实现。 首先,让我们了解一下静态库和动态库的概念。 静态库:是一种链接(编译期)时归档库,它包含多个目标文件的归档文件。程序链接时这些目标文件的代码会被直接复制到可执行文件中,因此生成的可执行文件比较大。静态库的优点是使用起来比较方便,缺点是可执行文件比较大,占据较多的磁盘空间。 动态库:是一种在运行时(载…

    C 2023年5月23日
    00
  • 通过实例了解java checked和unchecked异常

    通过实例了解java checked和unchecked异常的攻略: 一、了解checked和unchecked异常1. checked异常是指编译器在编译时就会检查,即程序在编译时必须对可能出现的checked异常进行处理,否则编译不会通过。2. unchecked异常是指编译器在编译时不会检查,即程序在运行时可能会抛出unchecked异常。3. 在Ja…

    C 2023年5月23日
    00
  • 约瑟夫环问题(数组法)c语言实现

    约瑟夫环问题(数组法)C语言实现 问题描述 有 $n$ 个人围成一圈,第 $m$ 个人开始报数,报到 $m$ 的人出圈,然后从出圈的下一个人开始继续报数,直到圈中只剩下一人。求出该人的编号。 解法思路 采用数组法解决约瑟夫环问题,主要的思路是:构建一个大小为 $n$ 的数组,来表示 $n$ 个人在约瑟夫环中的位置,将这些位置依次删除,直到只有一个人为止。 具…

    C 2023年5月23日
    00
  • C/C++ 恨透了 double free or corruption

    *以下内容为本人的学习笔记,如需要转载,请声明原文链接 微信公众号「ENG八戒」https://mp.weixin.qq.com/s/IwSVImp5cOB3gZbaf0YiPw 写过 C/C++ 的都知道,内存允许程序员自主分配,用完了这些资源也得释放出来,这种在系统运行过程中动态申请的内存,称为动态内存。 常言道,借东西好借好还,下次再借也不难,但是有的…

    C语言 2023年4月18日
    00
合作推广
合作推广
分享本页
返回顶部