JSON_CONTAINS_PATH
功能描述
JSON_CONTAINS_PATH函数用于检验一个或多个指定的路径(假如json是对象,那这里的路径就是指的json当中的key值)是否包含于目标JSON文档中。如果包含在目标JSON文档中,该函数返回true,否则返回false。
注意事项
该功能仅在数据库兼容模式为MySQL时支持(即数据库实例初始化时指定DBCOMPATIBILITY='B')。
语法格式
JSON_CONTAINS_PATH(json_doc, one_or_all, path[, path] ...)
参数说明
json_doc
指定 JSON 文档。
path
路径参数。
one_or_all
one_or_all参数可以为one或all。
one则只要一个path存在即返回true,否则返回false;all则全部path存在才返回true,否则返回false。
- 若one_or_all参数为one,则按顺序检查path,NULL 的path先于任一存在的path,则函数返回 NULL。
- 若one_or_all参数为all,则按顺序检查path,NULL 的path先于任一不存在的path,则函数返回 NULL。
示例
1、创建测试表并插入数据。
CREATE TABLE table_1159949 (target text,mode text);
INSERT INTO table_1159949 VALUES('{"a": 1, "b": 2, "c": {"d": 4}}', 'one');
INSERT INTO table_1159949 VALUES('{"a": 1, "b": 2, "c": {"d": 4}}', 'all');
2、在SELECT语句中使用JSON_CONTAINS_PATH函数。
SELECT *, json_contains_path(target, mode, '$.a.d', '$.c.d') FROM table_1159949;
返回结果为:
target | mode | json_contains_path
---------------------------------+------+--------------------
{"a": 1, "b": 2, "c": {"d": 4}} | one | t
{"a": 1, "b": 2, "c": {"d": 4}} | all | f
(2 rows)
3、清理环境。
DROP TABLE table_1159949;