postgresql中json[]字段如何使用

定义json[]字段后, 如何向里面插入数据呢?
比如, 我想存[{"id":1,"text":"添加"},{"id":2,"text":"修改"}]这样的数据,

update question set options='[{"id":1,"text":"添加"},{"id":2,"text":"修改"}]'

options是json[]字段,

运行后返回:

错误: 缺少大小值
LINE 1: update question set option='[{"id":1,"text":"添加"},{"id":2,...
^

********** 错误 **********

错误: 缺少大小值
SQL 状态: 22P02
字符:28

首先, 你可以使用以下 SQL 语句来创建一个包含 json[] 类型的表:

CREATE TABLE question (
  id serial PRIMARY KEY,
  options jsonb[]
);

如果你想在 json[] 字段中插入数据, 则可以使用如下的 INSERT 语句:

INSERT INTO question (options)
VALUES (ARRAY[
  '{"id":1,"text":"添加"}',
  '{"id":2,"text":"修改"}'
]);

或者使用 UPDATE 语句:

UPDATE question
SET options = options || ARRAY[
  '{"id":1,"text":"添加"}',
  '{"id":2,"text":"修改"}'
]
WHERE id = 1;

这样就可以在 json[] 字段中插入数据了.


注意: 在 INSERT 和 UPDATE 语句中, json 值必须以字符串形式插入, 并且必须使用单引号将其包围起来. 例如, '{"id":1,"text":"添加"}' 是一个合法的 json 值, 而 {"id":1,"text":"添加"} 则是不合法的.


参考文献:
https://www.postgresql.org/docs/current/datatype-json.html
https://www.postgresql.org/docs/current/functions-json.html