教你在PostgreSql中使用JSON字段的方法

 更新时间:2022年11月29日 17:04:13   作者:夜郎king  
这篇文章主要介绍了干货教你在PostgreSql中使用JSON字段,通过本文可掌握在pg数据库中如何正确使用json字段,如何进行数据查询,在where子查询中如何使用,以及对json值进行聚合查询使用,需要的朋友可以参考下

通过本文可掌握在pg数据库中如何正确使用json字段,如何进行数据查询,在where子查询中如何使用,以及对json值进行聚合查询使用.

概述

JSON 代表 JavaScript Object Notation。JSON是开放的标准格式,由key-value对组成。JSON的主要用于在服务器与web应用之间传输数据。新建表如下:

CREATE TABLE "public"."biz_orders" (  "ID" int8 NOT NULL DEFAULT nextval('"biz_orders_ID_seq"'::regclass),
  "info" json NOT NULL
);

表初始化语句:

INSERT INTO "biz_orders"("ID", "info") VALUES (1, '{"name":"张三","items":{"product":"啤酒","qty":6}}');
INSERT INTO "biz_orders"("ID", "info") VALUES (2, '{"name":"李四","items":{"product":"辣条","qty":8}}');
INSERT INTO "biz_orders"("ID", "info") VALUES (3, '{"name":"王五","items":{"product":"苹果","qty":18}}');
INSERT INTO "biz_orders"("ID", "info") VALUES (4, '{"name":"赵一","items":{"product":"香蕉","qty":20}}');

使用

1、简单查询

select * from biz_orders;

2、查询使用->操作符,查询json中所有顾客作为键

SELECT info -> 'name' AS customer FROM biz_orders;

3、下面使用->>操作获取所有顾客姓名作为值

SELECT info ->> 'name' AS customer FROM biz_orders;

4、根据json对象的key查询值

SELECT
   info -> 'items' ->> 'product' as product
FROM
   biz_orders
ORDER BY
   product;

5、where查询中使用json字段

SELECT
   info ->> 'name' AS customer
FROM
   biz_orders
WHERE
   info -> 'items' ->> 'product' = '辣条'

6、case 查询​​​​​​​

SELECT
   info ->> 'name' AS customer,
   info -> 'items' ->> 'product' AS product
FROM
   biz_orders
WHERE
   CAST (
      info -> 'items' ->> 'qty' AS INTEGER
   ) = 6

7、聚合函数​​​​​​​

SELECT
  MIN( CAST ( info -> 'items' ->> 'qty' AS INTEGER ) ),
  MAX( CAST ( info -> 'items' ->> 'qty' AS INTEGER ) ),
  SUM( CAST ( info -> 'items' ->> 'qty' AS INTEGER ) ),
  AVG( CAST ( info -> 'items' ->> 'qty' AS INTEGER ) ) 
FROM
  biz_orders;

8、类型查询​​​​​​​

SELECT
  json_typeof ( info -> 'items' -> 'qty' ) 
FROM
  biz_orders;

总结

通过以上例子,知道在pg数据库中如何存储json数据,并且掌握基本的查询,在查询条件中使用json,在聚合函数中使用。虽然,关系型数据库的强项不是在于json处理,而MongoDb或者Redis等NoSQL更适合做这类处理,但是在不引入一个新数据存储的情况下,利用现有架构解决生产问题。随着pg甚至mysql不断向前发展,相信未来对于json等数据支持会越来越好,性能也会越来越高。

到此这篇关于干货教你在PostgreSql中使用JSON字段的文章就介绍到这了,更多相关PostgreSql使用JSON字段内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • PostgreSQL与MySQL优劣势比较浅谈

    PostgreSQL与MySQL优劣势比较浅谈

    这篇文章主要详细介绍了PostgreSQL与MySQL有哪些优劣势,文中介绍的非常详细,对于学习有一定的帮助,感兴趣的小伙伴可以参考一下
    2023-04-04
  • postgreSQL 使用timestamp转成date格式

    postgreSQL 使用timestamp转成date格式

    这篇文章主要介绍了postgreSQL 使用timestamp转成date格式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • PostgreSQL新手入门教程

    PostgreSQL新手入门教程

    本文介绍PostgreSQL的安装和基本用法,供初次使用者上手。以下内容基于Debian操作系统,其他操作系统实在没有精力兼顾,但是大部分内容应该普遍适用
    2014-06-06
  • 如何在PostgreSQL中创建只读权限和读写权限的账号

    如何在PostgreSQL中创建只读权限和读写权限的账号

    一个良好的账号管理策略对于数据库的安全和数据的完整性至关重要,通过为不同的用户设置适当的权限,可以确保他们只能访问他们需要的数据,并防止对敏感数据的意外或恶意访问,本文介绍在 PostgreSQL中创建只读权限和读写权限的账号的步骤和方法,感兴趣的朋友一起看看吧
    2023-08-08
  • Postgresql设置远程访问的方法(需要设置防火墙或者关闭防火墙)

    Postgresql设置远程访问的方法(需要设置防火墙或者关闭防火墙)

    这篇文章主要介绍了Postgresql设置远程访问的方法(需要设置防火墙或者关闭防火墙),本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • 如何使用PostgreSQL进行中文全文检索

    如何使用PostgreSQL进行中文全文检索

    PostgreSQL被称为是“最高级的开源数据库”,它的数据类型非常丰富,用它来解决一些比较偏门的需求非常适合。由于PgSQL国内的资料较少,所有本文将详细介绍此类问题,以便后来的同学能顺利使用PgSQL。
    2021-05-05
  • postgresql 赋权语句 grant的正确使用说明

    postgresql 赋权语句 grant的正确使用说明

    这篇文章主要介绍了postgresql 赋权语句 grant的正确使用说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • 对postgresql日期和时间的比较

    对postgresql日期和时间的比较

    文章介绍了在数据库中处理日期和时间类型时的一些注意事项,包括如何将字符串转换为日期或时间类型,以及在比较时自动转换的情况,作者建议在使用数据库时,根据具体情况进行适当的类型转换,以避免潜在的错误
    2025-01-01
  • PostgreSQL如何查看事务所占有的锁实操指南

    PostgreSQL如何查看事务所占有的锁实操指南

    这篇文章主要给大家介绍了关于PostgreSQL如何查看事务所占有锁的相关资料,文中通过代码以及图文介绍的非常详细,对大家学习或者使用PostgreSQL具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-10-10
  • PostgreSQL 序列绑定字段与不绑定字段的区别说明

    PostgreSQL 序列绑定字段与不绑定字段的区别说明

    这篇文章主要介绍了PostgreSQL 序列绑定字段与不绑定字段的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-02-02

最新评论