我有一个表,它有一个名为"data"的字段,属于JSONB类型。"数据"的内容是一个对象,其中一个字段名为"associated_emails",它是一个字符串数组。
我需要更新现有的表格,以便"associated_emails"的内容都是小写。如何做到这一点?这是我迄今为止的尝试(它触发错误:ERROR: cannot extract elements from a scalar
(
update mytable my
set
"data" = safe_jsonb_set(
my."data",
'{associated_emails}',
to_jsonb(
lower(
(
SELECT array_agg(x) FROM jsonb_array_elements_text(
coalesce(
my."data"->'associated_emails',
'{}'::jsonb
)
) t(x)
)::text[]::text
)::text[]
)
)
where
my.mytype = 'something';
您希望使用JSONB_SET并更新列,如下所示:
UPDATE jsonb_test
SET data = JSONB_SET(data, '{0,associated_emails}',
JSONB(LOWER(data ->> 'associated_emails'::TEXT)));