教你在PostgreSql中使用JSON字段的方法
通過本文可掌握在pg數(shù)據(jù)庫中如何正確使用json字段,如何進行數(shù)據(jù)查詢,在where子查詢中如何使用,以及對json值進行聚合查詢使用.
概述
JSON 代表 JavaScript Object Notation。JSON是開放的標準格式,由key-value對組成。JSON的主要用于在服務器與web應用之間傳輸數(shù)據(jù)。新建表如下:
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、根據(jù)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、聚合函數(shù)???????
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數(shù)據(jù)庫中如何存儲json數(shù)據(jù),并且掌握基本的查詢,在查詢條件中使用json,在聚合函數(shù)中使用。雖然,關系型數(shù)據(jù)庫的強項不是在于json處理,而MongoDb或者Redis等NoSQL更適合做這類處理,但是在不引入一個新數(shù)據(jù)存儲的情況下,利用現(xiàn)有架構解決生產(chǎn)問題。隨著pg甚至mysql不斷向前發(fā)展,相信未來對于json等數(shù)據(jù)支持會越來越好,性能也會越來越高。
到此這篇關于干貨教你在PostgreSql中使用JSON字段的文章就介紹到這了,更多相關PostgreSql使用JSON字段內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
PostgreSQL三種自增列sequence,serial,identity的用法區(qū)別
這篇文章主要介紹了PostgreSQL三種自增列sequence,serial,identity的用法區(qū)別,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02PostgreSQL怎么創(chuàng)建分區(qū)表詳解
數(shù)據(jù)庫表分區(qū)把一個大的物理表分成若干個小的物理表,并使得這些小物理表在邏輯上可以被當成一張表來使用,下面這篇文章主要給大家介紹了關于PostgreSQL怎么創(chuàng)建分區(qū)表的相關資料,需要的朋友可以參考下2022-06-06postgresql 實現(xiàn)字符串分割字段轉列表查詢
這篇文章主要介紹了postgresql 實現(xiàn)字符串分割字段轉列表查詢,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-02-02使用PostGIS完成兩點間的河流軌跡及流經(jīng)長度的計算(推薦)
這篇文章主要介紹了使用PostGIS完成兩點間的河流軌跡及流經(jīng)長度的計算,使用POSTGIS及其擴展pgrouting計算給定兩點間的河流流經(jīng)區(qū)域和河流長度,需要的朋友可以參考下2022-01-01安全高效的PostgreSQL數(shù)據(jù)庫遷移解決方案
PostgreSQL數(shù)據(jù)庫是一款高度可擴展的開源數(shù)據(jù)庫系統(tǒng),支持復雜的查詢、事務完整性和多種數(shù)據(jù)類型由于各種業(yè)務需求,企業(yè)常常需要將數(shù)據(jù)在不同的云平臺或私有環(huán)境之間遷移,所以本文小編給大家介紹了安全高效的PostgreSQL數(shù)據(jù)庫遷移解決方案,需要的朋友可以參考下2023-11-11深入解讀PostgreSQL中的序列及其相關函數(shù)的用法
這篇文章主要介紹了PostgreSQL中的序列及其相關函數(shù)的用法,包括序列的更新和刪除等重要知識,需要的朋友可以參考下2016-01-01