postgresql 如果字段存在删除字段_干货!教你在PostgreSql中使用JSON字段

通过本文可掌握在pg数据库中如何正确使用json字段,如何进行数据查询,在where子查询中如何使用,以及对json值进行聚合查询使用. 概述JSON 代表 JavaScript Object Notation。JSON是开放的标准格式,由key-value对组成。JSON的主要用于在服务器与web应用之间传输数据。新建表如下:
CREATE TABLE "public"."Untitled" (  "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;

a5f12f5ef10cd5428d842bacf73527d1.png

2、查询使用->操作符,查询json中所有顾客作为键
SELECT info -> 'name' AS customer FROM biz_orders;

90ff2a7e1e0c174cb5ea2aa62e7e896c.png

3、下面使用->>操作获取所有顾客姓名作为值
SELECT info ->> 'name' AS customer FROM biz_orders;

12e5965575a6ba2587d0234e4872db20.png

4、根据json对象的key查询值
SELECT   info -> 'items' ->> 'product' as productFROM   biz_ordersORDER BY   product;

05af39e008badb2465c7b57b6786d739.png

5、where查询中使用json字段
SELECT   info ->> 'name' AS customerFROM   biz_ordersWHERE   info -> 'items' ->> 'product' = '辣条'

7d9efb845e4b7151176a00115dbca2c0.png

6、case 查询
SELECT   info ->> 'name' AS customer,   info -> 'items' ->> 'product' AS productFROM   biz_ordersWHERE   CAST (      info -> 'items' ->> 'qty' AS INTEGER   ) = 6

fcc5ca1124fcfa17abccdcb84bfda1d2.png

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;

ca66f575014b705fef7648f5f6da631a.png

8、类型查询
SELECT  json_typeof ( info -> 'items' -> 'qty' ) FROM  biz_orders;

ae84d78c75c137b798275586a32dd658.png

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值