Mysql内储存JSON字符串根据条件进行查询

MySQL中可以使用JSON值类型存储JSON格式的数据。而且MySQL也提供了一系列的JSON函数和操作符来方便地处理JSON值类型的数据。以下是使用MySQL内储存JSON字符串根据条件进行查询的步骤和实例说明。

MySQL中可以使用JSON值类型存储JSON格式的数据。而且MySQL也提供了一系列的JSON函数和操作符来方便地处理JSON值类型的数据。以下是使用MySQL内储存JSON字符串根据条件进行查询的步骤和实例说明。

步骤

  1. 创建一个表格

在MySQL数据库中,我们可以用如下语句创建一个表格:

sql
CREATE TABLE `students` (
`id` INT(10) unsigned NOT NULL AUTO_INCREMENT,
`name` VARCHAR(255) NOT NULL,
`age` INT(10) unsigned NOT NULL,
`info` JSON NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

这个表格包含4个字段,其中info是JSON类型字段。

  1. 插入数据

在表格中插入一些数据(以下示例数据仅供演示使用):

sql
INSERT INTO `students` (`name`, `age`, `info`)
VALUES
('John', 20, '{"address": "New York", "courses": ["Math", "English"]}' ),
('Tom', 18, '{"address": "Los Angeles", "courses": ["Computer Science", "Chemistry", "Geography"]}' ),
('Lucy', 21, '{"address": "San Francisco", "courses": ["Physics", "History"]}' );

注意:JSON值要用双引号括起来。

  1. 查询数据

查询JSON字段的数据使用->操作符和->>操作符。

  • ->:返回一个JSON对象或一个JSON数组中指定元素的数值
  • ->>:返回一个JSON对象或一个JSON数组中指定元素的文本值

以下是一些示例代码:

  1. 查询address为"New York"的学生信息:

    sql
    SELECT * FROM `students` WHERE `info` ->> '$.address' = 'New York';

    上述代码中,->>把JSON对象中的"address"字段返回为一个文本值,'$'表示根节点。

  2. 查询所有修习了"Math"课程的学生信息:

    sql
    SELECT * FROM `students` WHERE `info` -> '$.courses' LIKE '%Math%';

    上述代码用LIKE操作符查询"Math"是否出现在JSON数组中的"courses"字段里。

示例说明

上述代码的运行结果:

id name age info
1 John 20 {"address": "New York", "courses": ["Math", "English"]}
id name age info
2 Tom 18 {"address": "Los Angeles", "courses": ["Computer Science", "Chemistry", "Geography"]}

第一个结果中的info字段中有"address": "New York""courses": ["Math", "English"]两个属性。而第二个结果中的info字段中有"address": "Los Angeles""courses": ["Computer Science", "Chemistry", "Geography"],但因为其"courses"属性中没有"Math",所以没有被查询出来。

第二个示例中的运行结果:

id name age info
1 John 20 {"address": "New York", "courses": ["Math", "English"]}

本文标题为:Mysql内储存JSON字符串根据条件进行查询

基础教程推荐