MySQL 如何在 MySQL 中搜索 JSON 数组?
MySQL 5.7 版本及以后的版本中,可以在 SQL 语句中使用 JSON 函数来搜索 JSON 格式的数据类型,包括 JSON 对象和 JSON 数组。下面我们来看一下如何在 MySQL 中搜索 JSON 数组。
阅读更多:MySQL 教程
创建表和数据
首先,我们需要创建一个包含 JSON 数组的表,并往里面插入一些数据。
CREATE TABLE `students` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`scores` json DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `students` (`name`, `scores`) VALUES
('小明', '[{"course": "数学", "score": 85}, {"course": "语文", "score": 90}, {"course": "英语", "score": 80}]'),
('小红', '[{"course": "数学", "score": 95}, {"course": "语文", "score": 85}, {"course": "英语", "score": 90}]');
搜索 JSON 数组
假设现在我们需要查询数学成绩在 90 分以上的学生信息,我们可以使用 json_contains 函数来实现。
SELECT `name`, `scores`
FROM `students`
WHERE json_contains(`scores`, '{"course": "数学", "score": {"$gt": 90}}');
结果如下:
| name | scores |
|---|---|
| 小红 | [{“course”: “数学”, “score”: 95}, {“course”: “语文”, “score”: 85}, {“course”: “英语”, “score”: 90}] |
我们可以看到,通过 json_contains 函数,我们成功地找到了数学成绩在 90 分以上的学生信息。
总结
通过以上的实例,我们可以发现,使用 MySQL 中的 JSON 函数可以非常方便地搜索 JSON 类型的数据,提高了 SQL 语句的灵活性,使数据处理更加高效和方便。希望这篇文章能够帮助大家学习 MySQL 中 JSON 函数的使用。
极客教程