教你在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!
推薦閱讀:
- Postgresql數據庫中的json類型字段使用示例詳解
- MySQL中使用正則表達式詳情
- mysql語法之DQL操作詳解
- vue中v-for數據狀態值變瞭,但是視圖沒改變的解決方案
- PostgreSQL出現死鎖該如何解決