定义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