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技术站