PostgreSQL更新
Postgresql update
我是 postgreql 的新手 sql itself.So
如何设置 'class' 的 json 值?官方文档和其他资源为我提供了函数 jsonb_set,我用它来设置“X”的硬编码值,但是我无法根据学生设置动态值 table的专栏。
update dp_user_custom_properties_v2 ducpv
set json_value = jsonb_set(ducpv.json_value, '{class}',s.class::text)
from students s
where s.user_id = ducpv.user_id and s.status is null;
这不起作用但是
set json_value = jsonb_set(ducpv.json_value, '{class}','"A"')
确实如此。
发生这种情况是因为 jsonb_set()
的第 3 个参数应该是 jsonb 而您正在传递文本。您应该先将其转换为 jsonb。
使用 to_jsonb()
如下所示。
update dp_user_custom_properties_v2 ducpv
set json_value = jsonb_set(ducpv.json_value, '{class}',to_jsonb(s.class::text))
from students s
where s.user_id = ducpv.user_id and s.status is null;
我通过在线资源找到了另一种方法 -
update dp_user_custom_properties_v2 ducpv
set json_value = ducpv.json_value||jsonb_build_object('section', s.section,'class', s.class)
from students s
where s.user_id = ducpv.user_id and s.status is null;
我是 postgreql 的新手 sql itself.So 如何设置 'class' 的 json 值?官方文档和其他资源为我提供了函数 jsonb_set,我用它来设置“X”的硬编码值,但是我无法根据学生设置动态值 table的专栏。
update dp_user_custom_properties_v2 ducpv
set json_value = jsonb_set(ducpv.json_value, '{class}',s.class::text)
from students s
where s.user_id = ducpv.user_id and s.status is null;
这不起作用但是
set json_value = jsonb_set(ducpv.json_value, '{class}','"A"')
确实如此。
发生这种情况是因为 jsonb_set()
的第 3 个参数应该是 jsonb 而您正在传递文本。您应该先将其转换为 jsonb。
使用 to_jsonb()
如下所示。
update dp_user_custom_properties_v2 ducpv
set json_value = jsonb_set(ducpv.json_value, '{class}',to_jsonb(s.class::text))
from students s
where s.user_id = ducpv.user_id and s.status is null;
我通过在线资源找到了另一种方法 -
update dp_user_custom_properties_v2 ducpv
set json_value = ducpv.json_value||jsonb_build_object('section', s.section,'class', s.class)
from students s
where s.user_id = ducpv.user_id and s.status is null;