MySQL中如何查询JSON对象详细介绍和示例

MySQL中支持对JSON对象的查询,可以使用JSON函数和谓词来查询JSON列。

JSON函数

MySQL提供了一系列JSON函数,可以用于查询JSON对象,这些函数可以提取JSON对象中的值,或者检查JSON对象中的属性和值,以及检查JSON对象中是否存在某个属性。

JSON_EXTRACT()函数可以提取JSON对象中的值,该函数的语法如下:

JSON_EXTRACT(json_doc, path[, path]...)

其中,json_doc是JSON对象,path是JSON对象中的属性,可以使用多个path参数,查询JSON对象中的多个属性。

下面是一个示例:

SELECT JSON_EXTRACT(json_doc, '$.name') FROM table_name;

上面的查询语句会从表中的json_doc列中提取name属性的值。

JSON_CONTAINS()函数可以检查JSON对象中是否存在某个属性和值,该函数的语法如下:

JSON_CONTAINS(json_doc, val[, path]...)

其中,json_doc是JSON对象,val是要检查的值,path是要检查的属性。

下面是一个示例:

SELECT JSON_CONTAINS(json_doc, 'John', '$.name') FROM table_name;

上面的查询语句会检查json_doc列中的name属性是否为John。

JSON谓词

MySQL还支持JSON谓词,可以用于查询JSON对象,这些谓词可以检查JSON对象中的属性和值,以及检查JSON对象中是否包含某个值。

JSON_CONTAINS_PATH()谓词可以检查JSON对象中是否存在某个属性和值,该谓词的语法如下:

JSON_CONTAINS_PATH(json_doc, mode, val[, path]...)

其中,json_doc是JSON对象,mode是比较模式,可以是'$'或'$**',val是要检查的值,path是要检查的属性。

下面是一个示例:

SELECT * FROM table_name WHERE JSON_CONTAINS_PATH(json_doc, '$', 'John', '$.name');

上面的查询语句会检查json_doc列中的name属性是否为John。

JSON_SEARCH()谓词可以检查JSON对象中是否包含某个值,该谓词的语法如下:

JSON_SEARCH(json_doc, mode, val[, path]...)

其中,json_doc是JSON对象,mode是比较模式,可以是'one'或'all',val是要检查的值,path是要检查的属性。

下面是一个示例:

SELECT * FROM table_name WHERE JSON_SEARCH(json_doc, 'all', 'John', '$.name');

上面的查询语句会检查json_doc列中是否包含John这个值。

本文链接:http://task.lmcjl.com/news/6149.html

展开阅读全文