暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

华为GaussDB T JSON_MERGEPATCH

墨天轮 2019-10-12
594

JSON_MERGEPATCH

语法:

json_mergepatch(target, patch [returning_clause] [on_error_clause])

功能:该函数提供了修改目标json数据功能。如果patch的某路径下的成员数据不存在于target,则将该成员数据添加到target;如果该成员数据存在于target,则将target的值进行替换;如果成员变量的值等于null,则表明需要将target的该成员删除。函数具体实现可参照RFC标准,请参考链接:https://tools.ietf.org/html/rfc7396。

说明:

  • target:合法的JSON非标量数据(数组或对象);如果为空串''或空值NULL,则该函数返回空值NULL。
  • patch:补丁json数据,不能为NULL和标量,否则直接报错。
  • returning_clause:
    RETURNING [VARCHAR2[(size)]] | CLOB
    • 说明:

      该子句描述的返回值信息:

      • 未指定该子句时,默认返回VARCHAR2(3900);
      • size取值范围为1-32767,未指定size时,默认为3900;
      • 返回字符串转义字符会做反转义处理,例如标量字符串"A\"B"则反转义为A"B。
  • on_error_clause:
    [ERROR]|[NULL] ON ERROR
    • 说明:

      当出现以下错误时:

      • target为不合法的JSON数据或为JSON标量;
      • 在merge 的过程发生的任何错误;
      • 返回JSON数据超过returning_clause子句指定的大小。

      该子句返回值行为:

      • ERROR ON ERROR:返回错误;
      • NULL ON ERROR:返回空值NULL,也是未指定on_error_clause子句的默认行为;

示例

SQL> select json_mergepatch('{"A":{"B":123, "C":589}}','{"A":{"D":332}}') from SYS_DUMMY; JSON_MERGEPATCH('{"A":{"B":123, "C":589}}','{"A":{"D":332}}') ---------------------------------------------------------------- {"A":{"B":123,"C":589,"D":332}} 1 rows fetched. SQL> select json_mergepatch('{"A":{"B":123, "C":589}}','{"A":{"B":null}}') from SYS_DUMMY; JSON_MERGEPATCH('{"A":{"B":123, "C":589}}','{"A":{"B":NULL}}') ---------------------------------------------------------------- {"A":{"C":589}} 1 rows fetched. SQL> select json_mergepatch('{"A":{"B":123, "C":589}}','{"A":{"B":"hello"}}') from SYS_DUMMY; JSON_MERGEPATCH('{"A":{"B":123, "C":589}}','{"A":{"B":"HELLO"}}' ---------------------------------------------------------------- {"A":{"B":"hello","C":589}} 1 rows fetched. SQL> select json_mergepatch('{"title": "Goodbye!","author" : {"givenName" : "John","familyName" : "Doe"},"tags":[ "example", "sample" ],"content": "This will be unchanged"}','{"title": "Hello!","phoneNumber": "+01-123-456-7890","author": {"familyName": null},"tags": [ "example" ]}') as test_value from SYS_DUMMY; TEST_VALUE ---------------------------------------------------------------- {"title":"Hello!","author":{"givenName":"John"},"tags":["example"],"content":"This will be unchanged","phoneNumber":"+01-123-456-7890"} 1 rows fetched.
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论