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

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

数据猿 2023-04-13
258

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使用示例
最后修改时间:2023-04-13 20:31:47
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论