KingbaseES Json 系列一:Json构造函数
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 行记录)
KingbaseES Json 系列一:Json构造函数的更多相关文章
- json系列(三)cjson,rapidjson,yyjson解析性能对比
前言 本篇对cjson,rapidjson,yyjson三种json反序列化工具的性能进行对比. 有json样本数据如下: 实验环境: cpu:Xeon cpu主频:2.20GHz 以下示例均未对字段 ...
- javaScript系列:JSON详解
JSON详解 JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式.XML也是一种数据交 ...
- 【SqlServer系列】JSON数据
1 概述 本文将结合MSDN简要概述JSON数据. 2 具体内容 JSON 是一种流行的数据格式,用于在现代 Web 和移动应用程序中交换数据. JSON 还可用于在 Microsoft Az ...
- Python3入门系列之-----json与字典转换
json JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式,易于人阅读和编写 JSON 函数 使用 JSON 函数需要导入 json 库:import js ...
- .Net使用Newtonsoft.Json.dll(JSON.NET)对象序列化成json、反序列化json示例教程
JSON作为一种轻量级的数据交换格式,简单灵活,被很多系统用来数据交互,作为一名.NET开发人员,JSON.NET无疑是最好的序列化框架,支持XML和JSON序列化,高性能,免费开源,支持LINQ查询 ...
- [.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类
[.net 面向对象程序设计进阶] (13) 序列化(Serialization)(五) Json 序列化利器 Newtonsoft.Json 及 通用Json类 本节导读: 关于JSON序列化,不能 ...
- 使用Json.Net处理json序列化和反序列化接口或继承类
以前一直没有怎么关注过Newtonsoft的Json.Net这个第三方的.NET Json框架,主要是我以前在开发项目的时候大多数使用的都是.NET自带的Json序列化类JavaScriptSeria ...
- 简单实体Json序列化(输出JSON的属性可变)
简单实体Json序列化(输出JSON的属性可变) 一.先看效果 可以看出 , 我们在序列化一个对像时, 只给出了 我们想要 输出的两个字段名, 实际实体有5个属性, 经过可变属性序列化后的JSON ...
- Newtonsoft.Json.dll反序列化JSON字符串的方法
1.直接反序列化JSON字符串 //引用序列化.反序列化JSON字符串用到的空间 using Newtonsoft.Json; using Newtonsoft.Json.Linq; //定义一个 ...
- Android(java)学习笔记208:Android中操作JSON数据(Json和Jsonarray)
1.Json 和 Xml JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的 ...
随机推荐
- win32 - WaitForMultipleObjects的使用
创建5个线程,并无限期地打印某些内容 #include <Windows.h> #include <stdio.h> DWORD IDs[5]; DWORD WINAPI Th ...
- 多线程系列(七) -ThreadLocal 用法及内存泄露分析
一.简介 在 Java web 项目中,想必很多的同学对ThreadLocal这个类并不陌生,它最常用的应用场景就是用来做对象的跨层传递,避免多次传递,打破层次之间的约束. 比如下面这个HttpSer ...
- Qt+QtWebApp开发笔记(二):http服务器日志系统介绍、添加日志系统至Demo测试
前言 上一篇使用QtWebApp的基于Qt的轻量级http服务器实现了一个静态网页返回的Demo,网页服务器很重要的就是日志,因为在服务器类上并没有直接返回,所以,本篇先把日志加上. Demo ...
- ArrayList继承了AbstractList为何还要实现List接口
ArrayList继承了AbstractList为何还要实现List接口? 相关的问题: Vector既然继承了AbstractList为啥还要实现List接口 HashMap继承了AbstractM ...
- 前端css阴影画图
在线演示地址:css阴影画图 一,在css中有一个box-shadow属性,可以设置元素的阴影. .item{ width: 50px; height: 50px; background: #0096 ...
- 获取input[type="checkbox"]:checked 所在tr中特定元素
1.要求如下 2.html源码 <div class="btn"> <button type="button" onclick=" ...
- [VueJsDev] 快速入门 - vue项目根目录配置文件
[VueJsDev] 目录列表 https://www.cnblogs.com/pengchenggang/p/17037320.html vue项目根目录配置文件 ::: details 目录 目录 ...
- 痞子衡嵌入式:使用恩智浦GUI Guider快速创建全新LCD屏示例工程的步骤
大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是使用恩智浦GUI Guider快速创建全新LCD屏示例工程的步骤. 在痞子衡旧文 <在i.MXRT1170上快速点亮一款全新LCD ...
- Python 动态网页Fetch/XHR爬虫——以获取NBA球员信息为例
Python 动态网页Fetch/XHR爬虫--以获取NBA球员信息为例 动态网页抓取信息,一般利用F12开发者工具-网络-Fetch/XHR获取信息,实现难点有: 动态网页的加载方式 获取请求Url ...
- Asp .Net Core 系列:Asp .Net Core 集成 Hangfire+MySQL
简介 https://www.hangfire.io/ 在 .NET 和 .NET Core 应用程序中执行后台处理的简单方法,无需 Windows 服务或单独的进程. Hangfire 是一个开源的 ...