有没有办法计算JSON中的字段。以下是我的表格设置方式:
CREATE TABLE test1
(
id int not null,
data JSONB
)
这是我要插入的文件
{
'name': "test name",
'age': 46,
'heartrate': 211,
'heartrateminuseage': function(){ return this.heartrate - this.age; }
}
我怎样才能做出像这样的工作?
答案 0 :(得分:1)
假设您有以下数据:
CREATE TABLE test1(id INT NOT NULL, data JSONB);
INSERT INTO test1(id, data)
VALUES (1,'{"name": "test name",
"age": 46,
"heartrate": 211}'),
(2,'{"name": "test name2",
"age": 50,
"heartrate": 200,
"heartrateminuseage": 1000}');
要计算"heartrateminuseage"
,您可以先使用提取值,然后使用jsonb_set
进行设置:
SELECT id, data
,jsonb_set(data,'{"heartrateminuseage"}',
to_jsonb((data->>'heartrate')::int - (data ->>'age')::int),
true) AS data_2
FROM test1;
输出:
至于calculated column
:
CREATE VIEW wv_test1 AS SELECT id ,jsonb_set(data,'{"heartrateminuseage"}', to_jsonb((data->>'heartrate')::int - (data ->>'age')::int), true) AS data FROM test1;
更多信息: Computed / calculated columns in PostgreSQL 和 Store common query as column?