教你在PostgreSql中使用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字段內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: