金仓数据库KingbaseES Json 系列二 (Json对象函数)

KingbaseES Json 系列二

Json对象函数(JSONB_BUILD_OBJECT,JSONB_OBJECT,JSON_BUILD_OBJECT,JSON_OBJECT)

JSON 数据类型是用来存储 JSON(JavaScript Object Notation)数据的。KingbaseES为存储JSON数据提供了两种类型:JSON和 JSONB。JSON 和 JSONB 几乎接受完全相同的值集合作为输入。

本文将主要介绍Kingbase数据库的Json对象函数部分。

准备数据:

CREATE TABLE "public"."jsontable" (
    "id" integer NULL,
    "jsondata" json NULL,
    "jsonvarchar" varchar NULL,
    "jsonarray" json NULL
);

INSERT INTO public.jsontable ("id","jsondata","jsonvarchar","jsonarray") VALUES
     (1,'{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}}','{"f2": {"f3": 1}, "f4": {"f5": 99, "f6": "foo"}}','[1,true,[1,[2,3]],null,{"f1":1,"f2":[7,8,9]},false,"stringy"]'),
     (2,'{"a":[1,2,3,4,5]}','{"a": [1, 2, 3, 4, 5]}','[1,2,3,4,5]'),
     (3,'{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}}','{"a": 1, "b": ["2", "a b"], "c": {"d": 4, "e": "ab c"}}','[{"f1":1,"f2":null},2,null,3]');

CREATE TABLE "public"."comtable" (
    "id" integer NULL,
    "name" character varying(10 char) NULL
);

INSERT INTO "public"."comtable" ("id","name") VALUES
     (1,'a'),
     (2,'b'),
     (3,'c');

json函数列表

json函数简介

JSONB_BUILD_OBJECT

功能:

JSON处理函数,将可变参数列表构造成一个JSON 对象,通过转换,该参数列表由交替出现的键和值构成。
注意:参数列表的元素个数必须为偶数

用法:
jsonb_build_object( VARIADIC "any")
示例:
demo=# select JSONB_BUILD_OBJECT(id , name) from comtable ;
 JSONB_BUILD_OBJECT 
--------------------
 {"1": "a"}
 {"2": "b"}
 {"3": "c"}
(3 行记录)

-- 元素个数必须为偶数

demo=# select JSONB_BUILD_OBJECT(id) from comtable ;       
错误:  参数列表的元素个数必须为偶数
提示:  jsonb_build_object()的参数必须包含可替代的键和对应的值.

JSONB_OBJECT

功能:

JSON处理函数,从文本数组中构造JSON对象。

用法1:
jsonb_object(text[])

text数组必须包含偶数个元素

函数必须可以使具有偶数个成员的一维数组(成员被当做交替出现的键值对),或者是一个二维数组(每一个内部数组刚好有两个元素,可以被看做键值对)。

示例1:
demo=# SELECT jsonb_object(array[id::text ,name::text]) from comtable ;
 jsonb_object 
--------------
 {"1": "a"}
 {"2": "b"}
 {"3": "c"}
(3 行记录)

-- 数组必须包含偶数个元素

demo=# SELECT jsonb_object(array[id::text]) from comtable ;            
错误:  数组必须包含偶数个元素

demo=# SELECT jsonb_object('{a, b, "def", c, 3.5}');   
错误:  数组必须包含偶数个元素
用法2:
jsonb_object( keys text[], values text[])

keys数组和values数组维数需要一致

从两个独立的数组得到键/值对。在其他方面和一个参数的形式相同。

示例2:
demo=# SELECT jsonb_object(array[id],array[name]) from comtable ;      
 jsonb_object 
--------------
 {"1": "a"}
 {"2": "b"}
 {"3": "c"}
(3 行记录)

-- keys和values数组维数需要一致

demo=# SELECT jsonb_object(array[id ,id],array[name]) from comtable ;  
错误:  不匹配的数组维数

demo=# SELECT jsonb_object('{a,b}', '{1,2,3}');
错误:  不匹配的数组维数

JSON_BUILD_OBJECT

功能:

JSON处理函数,将可变参数列表构造成一个JSON 对象,通过转换,该参数列表由交替出现的键和值构成。
注意:参数列表的元素个数必须为偶数

用法:
json_build_object( VARIADIC "any")
示例:
参照JSONB_BUILD_OBJECT使用示例

JSON_OBJECT

功能:

JSON处理函数,从文本数组中构造JSON对象。

用法:
json_object(text[])

json_object( keys text[], values text[])
示例:
参照JSONB_OBJECT使用示例
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值