1. 程式人生 > >PostgreSQL的JSON型別

PostgreSQL的JSON型別

    JSON型別用於儲存JSON資料。使用字串也可以儲存JSON資料,但不能保證其合法性。支援JSON型別後,資料庫會對資料進行合法性檢查,同時提供豐富的函式。

1.JSON型別

    PostgreSQL支援JSON和JSONB。這兩種型別在使用上幾乎完全一致,主要區別是:

  (1)JSON型別把輸入的資料原封不動的存放到資料庫中。JSONB型別在存放時把JSON解析成二進位制格式。

  (2)JSONB支援在其上建索引,而JSON不能,這是JSONB的一個很大的優點。

  (3)JSON中會保留多餘的空格,保留重複的Key,保留Key的順序。JSONB則完全相反,不保留多餘的空格,不保留重複的Key,不保留Key的順序。

   JSON型別與PostgreSQL資料庫型別的對映:

JSON型別 PostgreSQL型別 注意事項
string text 注意字符集的一些限制
number numeric JSON中沒有PostgreSQL中的“NaN”,“infinity”
boolean  boolean  JSON僅能接受小寫的“true”和“false”
null (none) SQL中的NULL代表不同的意思

2.輸入與輸出

    JSON型別的兩種等價輸入方法:

select '9'::json, '"April"'::json, 'true'::json, 'null'::json;
select json'9', json'"April"', json'true', json'null';

  

    JSONB型別的兩種等價輸入方法:

select '9'::jsonb, '"April"'::jsonb, 'true'::jsonb, 'null'::jsonb;
select jsonb'9', jsonb'"April"', jsonb'true', jsonb'null';

 

    JSON中使用字典的例項

select json '{"name":"April","age":20,"address":"chengdu"}';