PostgreSQL的JSON型別
阿新 • • 發佈:2018-12-14
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"}';