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使用示例
KingbaseES Json 系列二:Json对象函数的更多相关文章
- JavaScript 闭包系列二(匿名函数及函数的闭包)
一. 匿名函数 1. 函数的定义,可分为三种 1) 函数声明方式 function double(x) { return 2*x; } 2)Function构造函数,把参数列表和函数体都作为字 ...
- 复习C语言系列二:动态调用函数指针数组
a:用call_fun_ptr调用afun(),b:用call_fun_ptr调用bfun() a 请输入给您指定的函数输调用的参数 afun_par ------------------------ ...
- 存储过程系列二:适用函数wm_concat(column)函数实现字段合并
1.学习wm_concat函数 oracle wm_concat(column)函数使我们经常会使用到的,下面就教您如何使用oraclewm_concat(column)函数实现字段合并 shoppi ...
- Newtonsoft.Json C# Json序列化和反序列化工具的使用、类型方法大全 C# 算法题系列(二) 各位相加、整数反转、回文数、罗马数字转整数 C# 算法题系列(一) 两数之和、无重复字符的最长子串 DateTime Tips c#发送邮件,可发送多个附件 MVC图片上传详解
Newtonsoft.Json C# Json序列化和反序列化工具的使用.类型方法大全 Newtonsoft.Json Newtonsoft.Json 是.Net平台操作Json的工具,他的介绍就 ...
- js中JSON的解析(将json字符串转化为对象)和序列化(将对象转化为json字符串)(函数的功能一般都挺全的,需要的时候去查看完整函数)
js中JSON的解析(将json字符串转化为对象)和序列化(将对象转化为json字符串)(函数的功能一般都挺全的,需要的时候去查看完整函数) 一.总结 1.JSON解析:JSON.parse(myJS ...
- JSON(二)——JavaScript中js对象与JSON格式字符串的相互转换
首先我们来看一下js中JSON格式的字符串 var JSONStr1 = "{\"name\" : \"张三\"}"; 注意以下的写法不是j ...
- JSON对象和JSON字符串以及JSON.parse 函数的使用
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- JavaScript操作JSON的方法总结,JSON字符串转换为JSON对象
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是 JavaScript 原生格式,这意 ...
- js 将json字符串转换为json对象的方法解析
推荐: var obj = eval('(' + str + ')'); var last=JSON.stringify(obj); //将JSON对象转化为string字符 例如: JSON字符串: ...
- javaScript 将json字符串转换为json对象的方法解析
JSON字符串: var str1 = '{ "name": "cxh", "sex": "man" }'; JSON对 ...
随机推荐
- Java集合框架学习(十二) Arrays类详解
声明:部分内容参考自:https://liuyanzhao.com/2863.html Arrays类介绍 这个类包含了用于操作数组的各种方法,诸如:排序和搜索. 这个类还包含一个静态方法asList ...
- SpringCloud SpringBoot 组件使用:SpringBoot Actuator
基础篇 一.什么是Spring Actuator? spring-boot-starter-actuator模块是一个spring提供的监控模块.我们在开运行发过程中,需要实时和定时监控服务的各项状态 ...
- 使用 CMake 编写 Windows 静态库
最近有一个多个 .h .cc .cpp 编译成静态库的需求,故记录下过程 静态库不同于动态库,它不需要 main 入口,只要各个源文件与头文件能对应,也就是源文件和头文件引用的头文件能够找到函数的符号 ...
- 【Azure 应用服务】Azure Function (PowerShell) 执行时报错 "out of memory"
问题描述 在Azure Function App服务中,创建一个PowerShell脚本的函数,遇见了OOM(Out Of Memory)的异常报错: 2022-01-10T07:44:37 Welc ...
- .NET 5 以后的 HttpClient 超时问题
背景 起因是朋友在使用深信服的 Easy Connect 连接到内网之后,使用 HttpClient 访问对应内网的 API 站点均返回 System.Net.Sockets.SocketExcept ...
- (广州南沙)vue知识点整理2021,主要是防止忘记防备快速翻看
/////////////////////////// vue 中使用路由技巧:router //////////////////////////////// 写笔记说明,之前在江门工作 ...
- MVC阶段所有框架完整组合示例
思路:创建工程,导包.编辑配置文件包括 核心spring配置 SpringConfig myBatis 配置文件 mybatisConfig JdbcConfig jdbc.properti ...
- python 生成虚拟环境requirement.txt
# 在项目根目录中,打开终端执行以下命令 # 生成 requirements.txt 文件 pip3 freeze > requirements.txt # 安装依赖文件 pip3 instal ...
- 代码片段管理软件 - 发现 utools 这个工具还行 windows软件
代码片段管理软件 - 发现 utools 这个工具还行 windows软件 介绍 这个软件不是专业的代码片段工具 好在还能凑合用 最完美的还是苹果那个软件,但是用的win没办法了 这个可以粘贴到vsc ...
- ulimit.conf中soft和hard区别及常用配置
在Linux中,ulimit命令用于限制用户对shell资源的访问,包括进程数.文件打开数等.这些限制可以分为软限制(soft limit)和硬限制(hard limit). 软限制(soft lim ...