KingbaseES 中 JSON 介绍
- KingbaseES支持JSON和JSONB。这两种类型在使用上几乎完全一致,主要区别是
- JSON类型把输入的数据原封不动的存放到数据库中。JSONB类型在存放时把JSON解析成二进制格式。
- JSONB支持在其上建索引,而JSON不能,这是JSONB的一个很大的优点。
- JSON中会保留多余的空格,保留重复的Key,保留Key的顺序。JSONB则完全相反,不保留多余的空格,不保留重复的Key,不保留Key的顺序。
- JSON基本类型和对应的KingbaseES类型
| JSON 基本类型 | KingbaseES类型 | 注释 |
|---|---|---|
| string | text | 不允许\u0000,如果数据库编码不是 UTF8,非ASCII Unicode转义也是这样 |
| number | numeric | JSON中没有 NaN 和 infinity值 |
| boolean | boolean | JSON只接受小写true和false拼写 |
| null | (无) | SQL NULL是一个不同的概念 |
- JSON 输入和输出语法
下列都是合法的json(或者jsonb)表达式:
简单标量/基本值
基本值可以是数字、带引号的字符串、true、false或者null
SELECT '5'::json;
有零个或者更多元素的数组(元素不需要为同一类型)
SELECT '[1, 2, "foo", null]'::json;
包含键值对的对象,注意对象键必须总是带引号的字符串
SELECT '{"bar": "baz", "balance": 7.77, "active": false}'::json;
数组和对象可以被任意嵌套
SELECT '{"foo": [true, "bar"], "tags": {"a": 1, "b": null}}'::json;
如前所述,当一个JSON值被输入并且接着不做任何附加处理就输出时,json会输出和输入完全相同的文本,而 JSONB 则不会保留语义上没有意义的细节(例如空格)。
例如,注意下面的不同:
SELECT '{"bar": "baz", "balance": 7.77, "active":false}'::json;
json
.-------------------------------------------------
{"bar": "baz", "balance": 7.77, "active":false}
(1 row)
SELECT '{"bar": "baz", "balance": 7.77, "active":false}'::jsonb;
jsonb
.--------------------------------------------------
{"bar": "baz", "active": false, "balance": 7.77}
(1 row)
KingbaseES 中 JSON 介绍的更多相关文章
- Asp.net中Json的序列化和反序列化(一)
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...
- .NET3.5中JSON用法以及封装JsonUtils工具类
.NET3.5中JSON用法以及封装JsonUtils工具类 我们讲到JSON的简单使用,现在我们来研究如何进行封装微软提供的JSON基类,达到更加方便.简单.强大且重用性高的效果. 首先创建一个类 ...
- Net中JSON序列化和反序列化处理(日期时间特殊处理)
0 缘由 笔者最近在web api端使用Json.Net进行序列化处理,而在调用端使用DataContractSerializer进行反序列化,遇到日期时间处理反序列化不成功[备注:笔者使用Net ...
- ASP.NET中JSON的序列化和反序列化
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍 ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介 ...
- ASP.NET 中JSON 的序列化和反序列化
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...
- Flutter 中 JSON 解析
本文介绍一下Flutter中如何进行json数据的解析.在移动端开发中,请求服务端返回json数据并解析是一个很常见的使用场景.Android原生开发中,有GsonFormat这样的神器,一键生成Ja ...
- Go_14:GoLang中 json、map、struct 之间的相互转化
1. golang 中 json 转 struct <1. 使用 json.Unmarshal 时,结构体的每一项必须是导出项(import field).也就是说结构体的 key 对应的首字母 ...
- ASP.NET中JSON的序列化和反序列化(转)
JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍 ...
- GoLang中 json、map、struct 之间的相互转化
1. golang 中 json 转 struct <1. 使用 json.Unmarshal 时,结构体的每一项必须是导出项(import field).也就是说结构体的 key 对应的首字母 ...
随机推荐
- 数仓的字符截取三胞胎:substrb、substr、substring
摘要:下面就来给大家介绍这三个函数在字符截取时的一些用法与区别. 本文分享自华为云社区<GaussDB(DWS)中的字符截取三胞胎>,作者:我站在北方的天空下 . 在GaussDB(DWS ...
- 【前端面试】(四)JavaScript var let const的区别
视频链接: JavaScript var let const的区别 - Web前端工程师面试题讲解 参考链接: JavaScript 变量 JavaScript Let JavaScript Cons ...
- 扩展新的WCV到标准的WC后,不能在业务角色里面看见视图解决方法
by zyi 感谢群主红枣的分享 1.把你的WCVIEW扩展进WC中 2.使用UI Designer打开你的WCVIEW 3.更改你的WCVIEW名字
- GaussDB(for MySQL) :Partial Result Cache,通过缓存中间结果对算子进行加速
摘要:华为云数据库高级内核技术专家详解GaussDB(for MySQL)Partial Result Cache特性,如何通过缓存中间结果对算子进行加速? 本文分享自华为云社区<GaussDB ...
- 详解HashMap源码解析(下)
上文详解HashMap源码解析(上)介绍了HashMap整体介绍了一下数据结构,主要属性字段,获取数组的索引下标,以及几个构造方法.本文重点讲解元素的添加.查找.扩容等主要方法. 添加元素 put(K ...
- C++ 练气期之二维数组与矩阵运算
1. 前言 C++中的一维数组可以存储线性结构的数据,二维数组可以存储平面结构的数据.如班上所有学生的各科目成绩就有二个维度,学生姓名维度和科目成绩维度. 这样的表格数据可以使用二维数组进行存储. 当 ...
- ctfshow的web入门171
web入门171 看到这个查询语句,我们可以进行相关操作 $sql = "select username,password from user where username !='flag' ...
- Ant Design Vue 走马灯实现单页多张图片轮播
最近的项目有个需求是,这种单页多图一次滚动一张图片的轮播效果,项目组件库是antd 然而用了antd的走马灯是这样子的 我们可以看到官网给的api是没有这种功能,百度上也多是在css上动刀,那样也就毕 ...
- 在 Windows 上使用压缩文件 安装 MySQL
在 Windows 上使用压缩文件 安装 MySQL 1. 下载 MySQL mysql-5.7.27-win32.zip:二进制文件; 服务器类型: mysqld 2. 解压 mysql-5.7.2 ...
- 类型转换_float()函数
float()函数不能将文字类的字符串类型转换成小数类型 同时将整数转换成浮点数类型的时候会在整数后买你加上.0 print(float(1))//output:1.0 print(float('1' ...