Sql 需要帮助在Postgres函数中设置Json键值吗
我需要帮助在Postgres函数中设置json的值。下面的代码将获取特定键的值。一旦我得到它,我需要做一些修改,并将其设置回相同的json键,然后将json传递给其他代码。我需要关于如何设置Postgres中任何Json键的值的帮助Sql 需要帮助在Postgres函数中设置Json键值吗,sql,json,postgresql,function,Sql,Json,Postgresql,Function,我需要帮助在Postgres函数中设置json的值。下面的代码将获取特定键的值。一旦我得到它,我需要做一些修改,并将其设置回相同的json键,然后将json传递给其他代码。我需要关于如何设置Postgres中任何Json键的值的帮助 create or replace function test_from_json(injson json) AS declare name text := injson->>'name'; 我不能像下面那样把它放回去 injson->>'
create or replace function test_from_json(injson json)
AS declare
name text := injson->>'name';
我不能像下面那样把它放回去
injson->>'name' := 'ABC';
Cach欢迎使用堆栈溢出 如果你有一个
jsonb
列,你只需要使用它,如果没有,就直接使用它
样本数据
CREATE TEMPORARY TABLE t (c JSONB);
INSERT INTO t VALUES ('{"name":"John","id":1}');
SELECT c->>'name' FROM t;
?column?
----------
John
(1 Zeile)
使用jsonb\u集进行查询
SELECT jsonb_set(c,'{name}','"John Doe"')
FROM t WHERE (c->>'id')::INT = 1;
jsonb_set
-------------------------------
{"id": 1, "name": "John Doe"}
(1 Zeile)
您需要使用jsonb
和jsonb_set()
谢谢。但我通过使用json_build_对象函数解决了这个问题。我把所有的值从injson转换成变量。修改了name的文本,并使用上述方法和name字段中的新值创建了一个新的json。