VastbaseG100

基于openGauss内核开发的企业级关系型数据库。

Menu

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)