在PostgreSQL 9.5中生成动态JSON

时间:2017-09-27 14:00:21

标签: json postgresql

我想在Postgres 9.5中动态生成查询。

这是我的表:

    | id |  ObjectType |            content            |
    -----+-------------+--------------------------------
    |  1 |      test   |  {"test_name": "test object"} |
    ----------------------------------------------------

这是我的查询

DO $$
DECLARE name text;
DECLARE label text;
BEGIN

select 'test' into name;
select 'test object' into label;
insert into "Constantes" (objecttype,content) values ('test','{"test_name":"test object"}')

END $$;

我希望在插入查询中替换'test' by the var 'name'并替换' test_name'通过

name+ '_name

最后替换'test object' by the label variable

我没有设法,我尝试使用+运算符,||操作员,但没有任何作用。

我的目标只是改变名称'和'标签'变量,因为我需要使用不同的值多次执行此查询。

1 个答案:

答案 0 :(得分:1)

我希望你在函数中使用这个块并通过传递值('name' - >'label')来调用该函数。如果是这样,您可以使用编号参数。查看官方的postgresql文档,它还有一些你可以使用的例子 - https://www.postgresql.org/docs/9.5/static/xfunc-sql.html

CREATE OR REPLACE FUNCTION insertRow(text, text) returns void AS $$
DECLARE
    name ALIAS FOR $1;
    label ALIAS FOR $2;
BEGIN
    insert into Constantes (objecttype,content) VALUES (name, '{"' || name || '_name":"' || label || '"}');
END;
$$ LANGUAGE plpgsql;