Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 需要帮助在Postgres函数中设置Json键值吗_Sql_Json_Postgresql_Function - Fatal编程技术网

Sql 需要帮助在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->>'

我需要帮助在Postgres函数中设置json的值。下面的代码将获取特定键的值。一旦我得到它,我需要做一些修改,并将其设置回相同的json键,然后将json传递给其他代码。我需要关于如何设置Postgres中任何Json键的值的帮助

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。