VastbaseG100

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

Menu

JSON_CONTAINS

功能描述

JSON_CONTAINS函数用于判断属性值是否存在。

根据target json是否包含candidate json返回1或0,返回1时表示属性值存在,返回0时表示不存在。

语法格式

json_contains(target json, candidate json [, path jsonpath])

参数说明

  • target

    被查找的json。

  • candidate

    查找的json。

  • path

    负责指定target中特定的查找路径,默认为空。

    当path参数给出时,则要求target json中由path指定路径来判断是否包含,而不是整个target。

注意事项

  • 该功能仅在数据库兼容模式为MySQL时能够使用(即创建DB时DBCOMPATIBILITY='B'),在其他数据库兼容模式下不能使用该特性。

  • 如果任何参数是NULL或者path没有指向target json的任何一部分,则返回NULL。

  • 当json_doc或path参数不符合对应类型时,或者path中含有*或**通配符时,函数执行报错。

  • 标量json(非数组json元素,非复合json对象)当且仅当它们是可以比较且比较结果为相等时是包含的;只有相同JSON TYPE的标量可以比较 (INTERGER和DECIMAL例外,它们可以互相比较)。

  • 一个candidate json数组被包含在target json数组是指:当且仅当每一个candidate元素被包含在target的某些元素中。

  • 一个candidate非json数组 被包含在target json数组是指:当且仅当该candidate被包含在target数组的某些元素中。

  • 一个candidate对象被包含在一个target对象是指:当且仅当对于candidate每个键,在target中都有相同名字的键,并且两个键所对应的值满足candidate值被包含在target值中。

示例

1、创建并进入兼容MySQL的库db_mysql。

CREATE DATABASE db_mysql DBCOMPATIBILITY 'B';
\c db_mysql 

2、调用函数。

select * from json_contains('{"a":1,"b":2,"c":{"d":4}}','1','$.a');

结果返回如下:

 json_contains
---------------
             1
(1 row)