postgresql中的json和jsonb

news/2024/7/9 23:16:20 标签: 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


http://www.niftyadmin.cn/n/1179497.html

相关文章

Linux平台下第三方软件中使用光标键乱码的问题处理

今天在Centos7版本下安装了Python3.3,而后又安装了Django1.7.在python中执行完一条命令后&#xff0c;想通过使用光标键来调用前面使用的命令&#xff0c;显示乱码..方法1&#xff1a;帮查资料&#xff0c;有如下资料被发现:资料原链接:http://blog.chinaunix.net/uid-20694808…

令人激动的新兴 Web 技术:WebGL和SVG

Bruce Lowson 是 Opera 开放 web 标准的撰写人员之一&#xff0c;一些没有包含在 HTML5 之内的浏览器技术十分奇妙&#xff0c;包括 WebGL 和 SVG&#xff0c;作者希望通过本文与共同爱好者们分享。 最近一位 HTML5 专家 Rich Clark(作者的好朋友)为大家做了一个 HTML5 APIs 的…

Don’t Put View Code Into Your View Controller别把View创建的代码放在VC中(swift)

Don’t Put View Code Into Your View Controller别把View创建的代码放在VC中Don’t Put View Code Into Your View Controller别把View创建的代码放在VC中The ViewThe View Controller原文链接代码Don’t Put View Code Into Your View Controller别把View创建的代码放在VC中S…

springmvc入门基础之注解和参数传递

一、SpringMVC注解入门 1. 创建web项目2. 在springmvc的配置文件中指定注解驱动&#xff0c;配置扫描器 Xml代码 <!-- mvc的注解驱动 --> <mvc:annotation-driven /> <!--只要定义了扫描器&#xff0c;注解驱动就不需要&#xff0c;扫描器已经有了注解驱动…

使用Mybatis的TypeHandler实现字段的类型映射转换

1. mybatis的TypeHandler类型转换 它的作用就是将java类型&#xff08;javaType&#xff09;转化为jdbc类型&#xff08;jdbcType&#xff09;&#xff0c;或者将jdbc类型&#xff08;jdbcType&#xff09;转化为java类型&#xff08;javaType&#xff09;。 2. 通过一个例子…

Outlook教程:Outlook pst文件损坏的修复方法

Outlook教程:Outlook pst文件损坏的修复方法 OUTLOOK2k OUTLOOK2003这两个版本&#xff0c;当单个PST文件超过2GB时&#xff0c;这时打开程序就会出现 Errors have been detected in the file . Quit all mail-enabled applications, and then use the Inbox Repair Tool 这个错…

注册这么久,终于开始写博客了

注册博客园6年多了&#xff0c;一直都是看高手写得博客&#xff0c;自己一直没有申请开通博客&#xff0c;现在自己也工作多年了&#xff0c;希望可以把以后日常遇到的问题及解决方法都记录下来&#xff0c;方便记忆及让大家多多指正。。。转载于:https://www.cnblogs.com/womd…

windows下apache+wsgi+web.py环境搭建

首先安装好wsgi模块并启用&#xff1a;1.下载地址&#xff1a;我本机是python2.7 http://code.google.com/p/modwsgi/downloads/detail?namemod_wsgi-win32-ap22py27-3.3.so2.把mod_wsgi-win32-ap22py27-3.3.so放到apache安装目录下的modules目录下3.打开 http.conf添加&#…