postgresql中的json和jsonb

1. 简介

postgresql9.3以后,我们可以将表的字段类型设置为json。
同时,postgresql还提供了jsonb格式,jsonb是json的二进制形式。
二者区别:

  1. json格式写入快,但读取慢;
  2. jsonb格式写入慢,但读取快。

2. 操作符

json&jsonb操作符右操作数类型描述例子结果
->int获取json数组的元素‘[{“a”:“foo”},{“b”:“bar”}]’::json->1{“b”:“bar”}
->text通过key值获取json对象字段‘{“a”: {“b”:“foo”}}’::json->‘a’{“b”:“foo”}
->>int获取json数组元素为字符串‘[1,2,3]’::json->>23
->>text获取json对象字段为字符串‘{“a”:1,“b”:2}’::json->>‘b’2
#>text[]在指定路径下获取json对象‘{“a”: {“b”:{“c”: “foo”}}}’::json#>’{a,b}’{“c”: “foo”}
#>>text[]在指定路径下获得json对象为字符串‘{“a”:[1,2,3],“b”:[4,5,6]}’::json#>>’{a,2}’3
jsonb操作符右操作数类型描述例子
@>jsonb在顶层,左边的json值包含右边的json值‘{“a”:1, “b”:2}’::jsonb @> ‘{“b”:2}’::jsonb
<@jsonb在顶层,右边的json值包含左边的json值‘{“b”:2}’::jsonb <@ ‘{“a”:1, “b”:2}’::jsonb
||jsonb将两个jsonb值连接成一个新jsonb值‘[“a”, “b”]’::jsonb || ‘[“c”, “d”]’::jsonb
?text判断字符串是否是该json的顶级键‘{“a”:1, “b”:2}’::jsonb ? ‘b’
?|text[]判断数组字符串中的任何一个是否作为该json的顶级键‘{“a”:1, “b”:2, “c”:3}’::jsonb ?| array[‘b’, ‘c’]
?&text[]判断所有的数组字符串是否都作为该json顶级键‘[“a”, “b”]’::jsonb ?& array[‘a’, ‘b’]
-text从左操作数中删除键/值对或字符串元素‘{“a”: “b”}’::jsonb - ‘a’
-text[]从左操作数中删除多个键/值对或字符串元素‘{“a”: “b”, “c”: “d”}’::jsonb - ‘{a,c}’::text[]
-integer删除具有指定索引的数组元素(末尾为负整数)‘[“a”, “b”]’::jsonb - 1
#-text[]删除具有指定路径的字段或元素‘[“a”, {“b”:1}]’::jsonb #- ‘{1,b}’

原文地址:https://www.postgresql.org/docs/11/functions-json.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值