首页 > 其他分享 >KingbaseES Json 系列一:Json构造函数

KingbaseES Json 系列一:Json构造函数

时间:2023-02-23 19:57:44浏览次数:36  
标签:f2 demo json JSON Json row KingbaseES select 构造函数

KingbaseES Json 系列一--Json构造函数(JSON,ROW_TO_JSON,TO_JSON,TO_JSONB)

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]');

json函数列表

json函数简介

JSON

功能:

JSON函数,使用JSON数据类型构造函数来解析文档的JSON输入(标量、对象或者数组),返回一个JSON类型的实例。

用法:

json (
  expression [ FORMAT JSON [ ENCODING UTF8 ] ]
  [ { WITH | WITHOUT } UNIQUE [ KEYS ] ]
  [ RETURNING json_data_type ]
)
expression [ FORMAT JSON [ENCODING UTF8] ]:字符串expression提供了JSON的文本数据。可以是字符串类型:varchar、char、text、varchar2、nvarchar2、nvarchar、clob、nclob,或者UTF8编码的二进制类型(bytea、blob)。
{ WITH | WITHOUT } UNIQUE [ KEYS ]:定义是否允许重复键。
RETURNING json_data_type:指定生成的JSON对象的返回类型的输出子句。只能返回JSON或者JSONB类型。

示例:


demo=# select json('[1,2,3,4,5]') ;
    json     
-------------
 [1,2,3,4,5]
(1 行记录)

demo=# select json(jsonvarchar) from jsontable ;
                          json                           
---------------------------------------------------------
 {"f2": {"f3": 1}, "f4": {"f5": 99, "f6": "foo"}}
 {"a": [1, 2, 3, 4, 5]}
 {"a": 1, "b": ["2", "a b"], "c": {"d": 4, "e": "ab c"}}
(3 行记录)

ROW_TO_JSON

功能:

把行作为一个 JSON对象返回。如果pretty_bool为真,将在第1层元素之间增加换行。

用法:

row_to_json(record [, pretty_bool])

示例:


demo=# select row_to_json(row(1,'foo'));
     row_to_json     
---------------------
 {"f1":1,"f2":"foo"}
(1 行记录)

demo=# select row_to_json(row(id,jsonvarchar)) from jsontable;
                                       row_to_json                                       
-----------------------------------------------------------------------------------------
 {"f1":1,"f2":"{\"f2\": {\"f3\": 1}, \"f4\": {\"f5\": 99, \"f6\": \"foo\"}}"}
 {"f1":2,"f2":"{\"a\": [1, 2, 3, 4, 5]}"}
 {"f1":3,"f2":"{\"a\": 1, \"b\": [\"2\", \"a b\"], \"c\": {\"d\": 4, \"e\": \"ab c\"}}"}
(3 行记录)

demo=# select row_to_json(row(id,jsonvarchar) , true) from jsontable;
                                   row_to_json                                    
----------------------------------------------------------------------------------
 {"f1":1,                                                                        +
  "f2":"{\"f2\": {\"f3\": 1}, \"f4\": {\"f5\": 99, \"f6\": \"foo\"}}"}
 {"f1":2,                                                                        +
  "f2":"{\"a\": [1, 2, 3, 4, 5]}"}
 {"f1":3,                                                                        +
  "f2":"{\"a\": 1, \"b\": [\"2\", \"a b\"], \"c\": {\"d\": 4, \"e\": \"ab c\"}}"}
(3 行记录)

TO_JSON

功能:

to_json(anyelement) 把值返回为json。

用法:

to_json(anyelement)

示例:


demo=#  select to_json(true);
 to_json 
---------
 true
(1 行记录)

demo=# select to_json('abcd'::text); 
 to_json 
---------
 "abcd"
(1 行记录)

demo=# select to_json(array['a','b']);
  to_json  
-----------
 ["a","b"]
(1 行记录)

demo=#  select to_json(id) from jsontable ;
 to_json 
---------
 1
 2
 3
(3 行记录)

TO_JSONB

功能:

to_json(anyelement) 把值返回为jsonb。

用法:

to_jsonb(anyelement)

示例:


demo=# select to_jsonb(true);
 to_jsonb 
----------
 true
(1 行记录)

demo=# select to_jsonb('abcd'::text);      
 to_jsonb 
----------
 "abcd"
(1 行记录)

demo=# select to_jsonb(array['a','b']);    
  to_jsonb  
------------
 ["a", "b"]
(1 行记录)

demo=#  select to_jsonb(id) from jsontable ;
 to_jsonb 
----------
 1
 2
 3
(3 行记录)

标签:f2,demo,json,JSON,Json,row,KingbaseES,select,构造函数
From: https://www.cnblogs.com/kingbase/p/17139690.html

相关文章

  • KingbaseES 可更新的视图
    可更新视图可简化视图可自动更新:系统将允许在视图上使用INSERT、UPDATE和DELETE语句,就像在常规表上一样。如果视图满足以下所有条件,就是可简化视图,则视图可自动更新:......
  • KingbaseES Json 系列十:Json数组构造函数
    KingbaseESJson系列十--Json数组构造函数(ARRAY_TO_JSON,JSONB_BUILD_ARRAY,JSON_ARRAY,JSON_BUILD_ARRAY)JSON数据类型是用来存储JSON(JavaScriptObjectNotation)数......
  • KingbaseES Json 系列九:Json路径查询函数
    KingbaseESJson系列九--Json路径查询函数(JSONB_PATH_EXISTS,JSONB_PATH_MATCH,JSONB_PATH_QUERY,JSONB_PATH_QUERY_ARRAY,JSONB_PATH_QUERY_FIRST)JSON数据类型是用来......
  • KingbaseES Json 系列八:Json记录操作函数三
    KingbaseESJson系列八--Json记录操作函数三(JSON_TABLE)JSON数据类型是用来存储JSON(JavaScriptObjectNotation)数据的。KingbaseES为存储JSON数据提供了两种类型:JSO......
  • KingbaseES Json 系列七:Json记录操作函数二
    KingbaseESJson系列七--Json记录操作函数二(JSONB_POPULATE_RECORD,JSONB_POPULATE_RECORDSET,JSON_POPULATE_RECORD,JSON_POPULATE_RECORDSET)JSON数据类型是用来存储......
  • KingbaseES Json 系列六:Json记录操作函数一
    KingbaseESJson系列六--Json记录操作函数一(JSONB_TO_RECORD,JSONB_TO_RECORDSET,JSON_TO_RECORD,JSON_TO_RECORDSET)JSON数据类型是用来存储JSON(JavaScriptObjectN......
  • KingbaseES Json 系列五--Json数据操作函数三
    KingbaseESJson系列五:Json数据操作函数三(JSONB_SET,JSONB_INSERT,JSON_QUERY)JSON数据类型是用来存储JSON(JavaScriptObjectNotation)数据的。KingbaseES为存储JSON......
  • KingbaseES Json 系列十二:Json其他函数
    KingbaseESJson系列十二--Json其他函数(JSONB_TYPEOF,JSON_SCALAR,JSON_SERIALIZE,JSON_TYPEOF,JSON_VALUE)JSON数据类型是用来存储JSON(JavaScriptObjectNotation)数......
  • KingbaseES Json 系列十一:Json数组操作函数
    KingbaseESJson系列十一--Json数组操作函数(JSONB_ARRAY_ELEMENTS,JSONB_ARRAY_ELEMENTS_TEXT,JSONB_ARRAY_LENGTH,JSON_ARRAY_ELEMENTS,JSON_ARRAY_ELEMENTS_TEXT,JSON_......
  • 【转】package.json 文件解析
     package.json文件解析每个项目的根目录下一般都会有一个package.json文件,这个文件定义了当前项目所需要的各种模块,以及项目的配置信息(比如名称、版本、许可证等)。当......