MySQL中可以使用JSON值类型存储JSON格式的数据。而且MySQL也提供了一系列的JSON函数和操作符来方便地处理JSON值类型的数据。以下是使用MySQL内储存JSON字符串根据条件进行查询的步骤和实例说明。
步骤
- 创建一个表格
在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类型字段。
- 插入数据
在表格中插入一些数据(以下示例数据仅供演示使用):
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值要用双引号括起来。
- 查询数据
查询JSON字段的数据使用->
操作符和->>
操作符。
->
:返回一个JSON对象或一个JSON数组中指定元素的数值->>
:返回一个JSON对象或一个JSON数组中指定元素的文本值
以下是一些示例代码:
-
查询address为"New York"的学生信息:
sql
SELECT * FROM `students` WHERE `info` ->> '$.address' = 'New York';上述代码中,
->>
把JSON对象中的"address"
字段返回为一个文本值,'$'
表示根节点。 -
查询所有修习了"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字符串根据条件进行查询 - Python技术站