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对 ...
随机推荐
- 【Android】使用BluetoothSocket实现跨设备通讯
1 前言 使用Socket实现跨设备通讯 中介绍了使用 WiFi 通道实现跨设备通讯,本文将介绍使用 Bluetooth 通道实现跨进程通讯. 本文全部代码见→使用BluetoothSocket实 ...
- Js实现链表操作
Js实现链表操作 JavaScript实现链表主要操作,包括创建链表.遍历链表.获取链表长度.获取第i个元素值.获取倒数第i个元素值.插入节点.删除节点.有序链表合并.有序链表交集. 创建链表 cla ...
- java类初始化及代码块加载顺序连根拔起
说明 相信很多人对于java中父子继承关系中,子类实例化调用过程中,代码块的执行顺序都容易忘记或搞混,尤其是java初级笔试题或面试题最容易出这类题目,让人恨得牙痒痒!!! 本文就一次性将其连根铲除, ...
- 文件的拓展及文件函数,定义函数及函数参数---day09
1.文件的拓展模式 utf-8 编码格式下,默认一个中文三个字节,一个英文或符号占用一个字节 read() 功能:读取字符的个数(里面的参数代表字符个数) seek() 功能:调整指针的位置(里面的参 ...
- time模块,os操作系统及os模块和shutil模块用法---day16
1.时间模块 import time time.time() 获取本地时间戳 localtime() 获取本地时间元组,参数是时间戳,默认不写是当前 ***** mktime() 通过时间元组获取时间 ...
- 亲测可行,Android Studio 查看源码出现 Source for ‘Android API xxx Platform’ not found 的解决方法
亲测可行,Android Studio 查看源码出现 Source for 'Android API xxx Platform' not found 的解决方法 如标题中的问题,产生的原因就是 SDK ...
- 【Docker】使用 Docker 部署 .Net Core 项目 (四)
系列目录: [Docker] CentOS7 安装 Docker 及其使用方法 ( 一 ) [Docker] 使用Docker 在阿里云 Centos7 部署 MySQL 和 Redis (二) [D ...
- springboot-@Async默认线程池导致OOM问题
目录 内存溢出的三种类型: 初步分析: 代码分析: 最终解决办法: 内存溢出的三种类型: 第一种OutOfMemoryError: PermGen space,发生这种问题的原意是程序中使用了大量的j ...
- 【Azure Redis 缓存】Lettuce 连接到Azure Redis服务,出现15分钟Timeout问题
问题描述 在Java应用中,使用 Lettuce 作为客户端SDK与Azure Redis 服务连接,当遇见连接断开后,长达15分钟才会重连.导致应用在长达15分的时间,持续报错Timeout 问题解 ...
- 【Azure Developer】调用Microsoft Graph API获取Authorization Token,使用的认证主体为 Azure中的Managed Identity(托管标识)
问题描述 在常规情况下,如果要从Azure中获取Authorization Token,需要在Azure AAD中注册一个应用主体,通过Client ID + Client Secret生成Token ...