KingbaseES 中 JSON 介绍

  • KingbaseES支持JSON和JSONB。这两种类型在使用上几乎完全一致,主要区别是
  1. JSON类型把输入的数据原封不动的存放到数据库中。JSONB类型在存放时把JSON解析成二进制格式。
  2. JSONB支持在其上建索引,而JSON不能,这是JSONB的一个很大的优点。
  3. JSON中会保留多余的空格,保留重复的Key,保留Key的顺序。JSONB则完全相反,不保留多余的空格,不保留重复的Key,不保留Key的顺序。
  • JSON基本类型和对应的KingbaseES类型
JSON 基本类型KingbaseES类型注释
stringtext不允许\u0000,如果数据库编码不是 UTF8,非ASCII Unicode转义也是这样
numbernumericJSON中没有 NaN 和 infinity值
booleanbooleanJSON只接受小写true和false拼写
null(无)SQL NULL是一个不同的概念
  • JSON 输入和输出语法
    下列都是合法的json(或者jsonb)表达式:
    简单标量/基本值
    基本值可以是数字、带引号的字符串、true、false或者nullSELECT '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)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值