KingbaseES Json 系列十:Json数组构造函数
KingbaseES Json 系列十--Json数组构造函数(ARRAY_TO_JSON,JSONB_BUILD_ARRAY,JSON_ARRAY,JSON_BUILD_ARRAY)
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,
"jsonrecord" json NULL,
"jsonset" json NULL
);
INSERT INTO "public"."jsontable" ("id","jsondata","jsonvarchar","jsonarray","jsonrecord","jsonset") 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"]','{"a":1,"b":"bcol","c":"cc"}','[{"a":1,"b":"bcol","c":"cc"},{"a":1,"b":"bcol","d":""}]'),
(2,'{"a":[1,2,3,4,5]}','{"a": [1, 2, 3, 4, 5]}','[1,2,3,4,5]','{"a":1,"b":"bcol","c":""}','[{"a":1,"b":"bcol","c":""},{"a":1,"b":"bcol","e":""}]'),
(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]','{"a":1,"b":"bcol","d":"dd"}','[{"a":1,"b":"bcol","c":"cc_3_1"},{"a":1,"b":"bcol","c":"cc_3_2"}]');
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函数简介
ARRAY_TO_JSON
功能:
把数组 anyarray 作为json数组返回,一个多维数组会成为一个数组的json数组。如果 pretty_bool 设为真,将会在数组维度之间增加换行符。
用法:
array_to_json(anyarray [, pretty_bool])
示例:
demo=# SELECT array_to_json('{{1,5},{99,100}}'::int[]);
array_to_json
------------------
[[1,5],[99,100]]
(1 行记录)
demo=# SELECT array_to_json('{{1,5},{99,100}}'::int[],true);
array_to_json
---------------
[[1,5], +
[99,100]]
(1 行记录)
JSONB_BUILD_ARRAY
功能:
JSON处理函数,将可变参数列表构造成一个可能包含不同数据类型的JSON数组。
用法:
jsonb_build_array( VARIADIC "any")
示例:
demo=# select jsonb_build_array(id,name) from comtable ;
jsonb_build_array
-------------------
[1, "a"]
[2, "b"]
[3, "c"]
(3 行记录)
JSON_ARRAY
功能:
JSON处理函数,函数通过SQL或者JSON数据构建一个JSON数组。
用法1:
JSON_ARRAY (
[ { value_expression [ FORMAT JSON ] } [, ...] ]
[ { NULL | ABSENT } ON NULL ]
[ RETURNING data_type [ FORMAT JSON [ ENCODING UTF8 ] ] ]
)
value_expression [ FORMAT JSON ] :为构造JSON数据提供数据的输入子句。
{ NULL | ABSENT } ON NULL :指定此函数在value_expression计算结果为 null 时的行为。
RETURNING data_type [ FORMAT JSON [ ENCODING UTF8 ]]:指定生成数据的类型。支持以下类型:json、jsonb、bytea和字符串类型(text、char、varchar和nchar),还支持VARCHAR2、BLOB、CLOB类型。
示例1:
demo=# select json_array(id ,name) from comtable ;
json_array
------------
[1, "a"]
[2, "b"]
[3, "c"]
(3 行记录)
-- 设置值为null时,处理方式
demo=# insert into comtable values('','');
INSERT 0 1
demo=# select json_array(id ,name null on null) from comtable ;
json_array
--------------
[1, "a"]
[2, "b"]
[3, "c"]
[null, null]
(4 行记录)
demo=# select json_array(id ,name absent on null) from comtable ;
json_array
------------
[1, "a"]
[2, "b"]
[3, "c"]
[]
(4 行记录)
用法2:
JSON_ARRAY (
[ query_expression ]
[ RETURNING data_type [ FORMAT JSON [ ENCODING UTF8 ] ] ]
)
query_expression :提供用于构造JSON数组的的数据的SQL查询。查询只能返回包含要在数组中使用的一个列,不能是多列。
RETURNING data_type [ FORMAT JSON [ ENCODING UTF8 ]]:指定生成数据的类型。
支持以下类型:json、jsonb、bytea和
字符串类型(text、char、varchar和nchar),
还支持VARCHAR2、BLOB、CLOB类型。
示例2:
demo=# select json_array(select id from comtable ) from dual ;
json_array
------------
[1, 2, 3]
(1 行记录)
demo=# select json_array(select id from comtable returning text) from dual ;
json_array
------------
[1, 2, 3]
(1 行记录)
JSON_BUILD_ARRAY
功能:
JSON处理函数,将可变参数列表构造成一个可能包含不同数据类型的JSON数组。
用法:
json_build_array( VARIADIC "any")
示例:
参照JSONB_BUILD_ARRAY使用示例
KINGBASE研究院
分类:
SQL
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!