关于PostgreSQL 的 json[] 和 jsonb[]的操作

Arthur1977 发布于 2014/06/19 16:10
阅读 6K+
收藏 0
你好,我目前使用的是PostgreSQL的9.4 beta1的版,我想请问关于JSON []和jsonb [] 这两种JSON阵列新增方式。

我的有两笔json的资料如下

{“项目名称”:“伺服马达”,“规格”:“3000转”,“价格”:26000},
{“项目名称”:“电池”,“规格”:“2000毫安”,“价格”:500}

我透过下面的SQL指令,建立资料表并插入资料

create table SaleOrder

   OrderDetail jsonb []


insert into SalesOrder

   OrderDetail
)values

 '[{"ItemName":"伺服馬達","Spec":"","Price":26000},{"ItemName":"電池","Spec":"2000mAh","Price":500}]',





却会发生以下错误讯息:
-------------------------------------------------- ---------------------------
ERROR:  missing dimension value
LINE 18:  '[{"ItemName":"伺服馬達","Spec":"","Price":26000},{"ItemNam...
          ^


********** Error **********


ERROR: missing dimension value
SQL state: 22P02
Character: 398
-------------------------------------------------- ----------------------------
有人知道问题出在哪吗?


另外我想请问的是,jsonb[] 和 json[]的插入新资料和更新资料的方式是否相同?




感谢回覆。

以下是问题补充:

@Arthur1977:先感谢大家的回覆,如果我希望在一笔记录中的json[] 里存入多笔json 物件资料,该如何做呢? 比方说,SalesOrder 资料表包含OrderNumber(订单号码) 和OrderDetail(订单明细)。 create table SalesOrder (OrderNumber varchar(255),OrderDetail jsonb[]) 我对 jsonb[] 的理解是: jsonb[] 代表的是这一个栏位能用二进​​位的方式储存多笔的json 物件结构资料。 所以说我希望能够透过这一项功能达到一笔资料列就能储存多笔的json资料。 如果必须改成单笔储存就失去了json[] 和jsonb[] 的意义了。 (2014/06/19 23:45)
加载中
1
cyclamenkde
cyclamenkde

create table SaleOrder (OrderDetail jsonb []);

insert into SaleOrder (OrderDetail)
values (array['{"ItemName":"伺服馬達","Spec":"","Price":26000}'::jsonb,'{"ItemName":"電池","Spec":"2000mAh","Price":500}'::jsonb]);

select * from SaleOrder


 

返回顶部
顶部