MySQL中支持对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。
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