KingbaseES Json 系列三:Json数据操作函数一
KingbaseES Json 系列三--Json数据操作函数一(JSONB_EACH,JSONB_EACH_TEXT,JSONB_OBJECT_KEYS,JSONB_EXTRACT_PATH,JSONB_EXTRACT_PATH_TEXT,JSON_EACH,JSON_EACH_TEXT,JSON_OBJECT_KEYS,JSON_EXTRACT_PATH,JSON_EXTRACT_PATH_TEXT)
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函数简介
JSONB_EACH
功能:
JSON处理函数,扩展最外层的JSON对象成为一组键值对。
用法:
jsonb_each(jsonb)
示例:
demo=# SELECT jt.jsondata,je.* FROM jsontable jt, jsonb_each(jt.jsondata) je;
jsondata | key | value
------------------------------------------------------+-----+-------------------------
{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}} | f2 | {"f3": 1}
{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}} | f4 | {"f5": 99, "f6": "foo"}
{"a":[1,2,3,4,5]} | a | [1, 2, 3, 4, 5]
{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | a | 1
{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | b | ["2", "a b"]
{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | c | {"d": 4, "e": "ab c"}
(6 行记录)
JSONB_EACH_TEXT
功能:
JSON处理函数,扩展最外层的JSON对象成为一组键值对,返回值为 text 类型。
用法:
jsonb_each_text(jsonb)
示例:
demo=# SELECT jt.jsondata,je.* FROM jsontable jt, jsonb_each_text(jt.jsondata) je;
jsondata | key | value
------------------------------------------------------+-----+-------------------------
{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}} | f2 | {"f3": 1}
{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}} | f4 | {"f5": 99, "f6": "foo"}
{"a":[1,2,3,4,5]} | a | [1, 2, 3, 4, 5]
{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | a | 1
{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | b | ["2", "a b"]
{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | c | {"d": 4, "e": "ab c"}
(6 行记录)
JSONB_OBJECT_KEYS
功能:
JSON函数,返回外层JSON对象中键的集合。
用法:
jsonb_object_keys(jsonb)
示例:
demo=# select jt.jsondata, jo.* from jsontable jt, jsonb_object_keys(jt.jsondata) jo;
jsondata | jo
------------------------------------------------------+----
{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}} | f2
{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}} | f4
{"a":[1,2,3,4,5]} | a
{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | a
{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | b
{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | c
(6 行记录)
JSON_EXTRACT_PATH
功能:
JSON处理函数,返回由 path_elems 指向的JSON值(等效于#>操作符)。
用法:
json_extract_path(from_json json, VARIADIC path_elems text[])
示例:
demo=# select jt.jsondata, je.* from jsontable jt, json_extract_path(jt.jsondata ,'a') je;
jsondata | je
------------------------------------------------------+-------------
{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}} |
{"a":[1,2,3,4,5]} | [1,2,3,4,5]
{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | 1
(3 行记录)
-- 多个路径提取子对象中的值
demo=# select jt.jsondata, je.* from jsontable jt, json_extract_path(jt.jsondata ,'f4' ,'f5') je;
jsondata | je
------------------------------------------------------+----
{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}} | 99
{"a":[1,2,3,4,5]} |
{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} |
(3 行记录)
JSON_EXTRACT_PATH_TEXT
功能:
JSON处理函数,以 text 类型返回由 path_elems 指向的JSON值(等效于#>操作符)。
用法:
json_extract_path_text(from_json json, VARIADIC path_elems text[])
示例:
demo=# select jt.jsondata, je.* from jsontable jt, json_extract_path_text(jt.jsondata ,'a') je;
jsondata | je
------------------------------------------------------+-------------
{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}} |
{"a":[1,2,3,4,5]} | [1,2,3,4,5]
{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} | 1
(3 行记录)
-- 多个路径提取子对象中的值
demo=# select jt.jsondata, je.* from jsontable jt, json_extract_path_text(jt.jsondata ,'f4' ,'f5') je;
jsondata | je
------------------------------------------------------+----
{"f2":{"f3":1},"f4":{"f5":99,"f6":"foo"}} | 99
{"a":[1,2,3,4,5]} |
{"a":1, "b": ["2", "a b"],"c": {"d":4, "e": "ab c"}} |
(3 行记录)
JSON_EACH
功能:
JSON处理函数,扩展最外层的JSON对象成为一组键值对。
用法:
json_each(json)
示例:
参照JSONB_EACH使用示例
JSON_EACH_TEXT
功能:
JSON处理函数,扩展最外层的JSON对象成为一组键值对,返回值为 text 类型。
用法:
json_each_text(json)
示例:
参照JSONB_EACH_TEXT使用示例
JSON_OBJECT_KEYS
功能:
JSON函数,返回外层JSON对象中键的集合。
用法:
json_object_keys(json)
示例:
参照JSONB_OBJECT_KEYS使用示例
JSONB_EXTRACT_PATH
功能:
JSON处理函数,返回由 path_elems 指向的JSON值(等效于#>操作符)。
用法:
jsonb_extract_path(from_json json, VARIADIC path_elems text[])
示例:
参照JSONB_EXTRACT_PATH使用示例
JSONB_EXTRACT_PATH_TEXT
功能:
JSON处理函数,以 text 类型返回由 path_elems 指向的JSON值(等效于#>操作符)。
用法:
jsonb_extract_path_text(from_json json, VARIADIC path_elems text[])
示例:
参照JSONB_EXTRACT_PATH_TEXT使用示例
KingbaseES Json 系列三:Json数据操作函数一的更多相关文章
- Jq_Ajax 操作函数跟JQuery 遍历函数跟JQuery数据操作函数
JQuery文档操作方法 jQuery 库拥有完整的 Ajax 兼容套件.其中的函数和方法允许我们在不刷新浏览器的情况下从服务器加载数据. 函数 ...
- 【summary】JQuery 相关css、ajax、数据操作函数或方法
总结一下JQuery常用的函数方法,更加系统的整理一下. JQuery遍历的一些函数: 函数 描述 .add() 将元素添加到匹配元素的集合中. .andSelf() 把堆栈中之前的元素集添加到当前集 ...
- Python股票分析系列——基础股票数据操作(一).p3
该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第3部分.在本教程中,我们将使用我们的股票数据进一步分解一些基本的数据操作和可视化.我们将要使用 ...
- ORACLE链接SQLSERVER数据库数据操作函数范例
ORACLE链接SQLSERVER数据库数据操作函数范例 create or replace function FUN_NAME(LS_DJBH IN varchar2 ,LS_ITM varchar ...
- hive从入门到放弃(三)——DML数据操作
上一篇给大家介绍了 hive 的 DDL 数据定义语言,这篇来介绍一下 DML 数据操作语言. 没看过的可以点击跳转阅读: hive从入门到放弃(一)--初识hive hive从入门到放弃(二)--D ...
- 每天十分钟系列:JS数据操作之神奇的map()
Array.prototype.map() map()方法可以创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果. demo1 上面的例子,在控制台中打印的结果是: 1 2 3 ...
- Python股票分析系列——基础股票数据操作(二).p4
该系列视频已经搬运至bilibili: 点击查看 欢迎来到Python for Finance教程系列的第4部分.在本教程中,我们将基于Adj Close列创建烛台/ OHLC图,这将允许我介绍重新采 ...
- jQuery 数据操作函数(九)
.clearQueue() 从队列中删除所有未运行的项目. .data() 存储与匹配元素相关的任意数据. jQuery.data() 存储与指定元素相关的任意数据. .dequeue() 从队列最前 ...
- 学习ASP.NET Core Razor 编程系列三——创建数据表及创建项目基本页面
一.创建脚本工具并执行初始迁移 在本节中,您将使用包管理控制台(PMC)来更新数据库: •添加VisualStudio Web代码生成包.这个包是运行脚本引擎所必需的. • 执行Add-Migrati ...
- Selenium3 + Python3自动化测试系列三——控制浏览器操作
控制浏览器操作 控制浏览器窗口大小 在测试过程中,我们在打开浏览器后,根据需求可自定义调整浏览器的尺寸大小.WebDriver提供了set_window_size()方法来设置浏览器的大小. 如果页面 ...
随机推荐
- 如何查看当前Ubuntu系统的版本-【转 https://www.cnblogs.com/chenxiaomeng/p/10038492.html】
如何查看当前Ubuntu系统的版本 一.系统位数 在控制台输入:sudo uname --m 如果显示i686,则表示安装了32位操作系统 如果显示 x86_64,则表示安装了64位操作系统 sudo ...
- Windows xp 无法远程连接Windows Server 2008
-------------------------转载自: Windows XPSP3通过网络级身份验证方式连接Windows Server 2008远程桌面 远程桌面大大方便了大家的日常管理工作,W ...
- SpringCloud SpringBoot 组件使用:SpringBoot Actuator
基础篇 一.什么是Spring Actuator? spring-boot-starter-actuator模块是一个spring提供的监控模块.我们在开运行发过程中,需要实时和定时监控服务的各项状态 ...
- 如何编写一个 PowerShell 脚本
PowerShell 脚本的后缀是 .ps1 前提: ps1 脚本可以帮忙我们快速修改文件内容,还不需要调用文件的底层 api,方便快捷 在编写 CMakeLists 时发现,项目不能够很好的使用 v ...
- 一个自定义可扩展的检测变量的函数typeofIt();
自定义方法typeofIt()是用来判断传入的变量或属性是什么类型的; 1.如果是基础类型变量则返回代表基础变量类型小写格式的字符串及一些简易说明; 2.如果是对象类型变量则返回结尾带有"O ...
- ASP.NET Core MVC应用模型的构建[1]: 应用的蓝图
我个人觉得这是ASP.NET Core MVC框架体系最核心的部分.原因很简单,MVC框架建立在ASP.NET Core路由终结点上,它最终的目的就是将每个Action方法映射为一个或者多个路由终结点 ...
- Android底层渲染原理
Overview多年前Android的UI流畅性差的问题一直饱受诟病,Google为了解决这个问题开发了Project Butter项目,也就是黄油计划,期望彻底改善Android系统的流畅性.这是A ...
- 【Azure K8S】演示修复因AKS密钥过期而导致创建服务不成功的问题(The provided client secret keys for app ****** are expired)
问题描述 在Azure Kubernetes 服务中,创建一个Internal Load Balancer服务,使用以下yaml内容: internallb.yaml apiVersion: v1 k ...
- 【Azure Developer】PHP网站使用AAD授权登录的参考示例
问题描述 如果有个PHP网站,需要使用AAD授权登录,有没有PHP代码实例 可供参考呢? 参考代码 参考一篇博文(Single sign-on with Azure AD in PHP),学习使用SS ...
- C#多线程(8):线程完成数
目录 解决一个问题 CountdownEvent 类 构造函数和方法 示例 解决一个问题 假如,程序需要向一个 Web 发送 5 次请求,受网路波动影响,有一定几率请求失败.如果失败了,就需要重试. ...