如何将表中每行字符串的JSONB数组中的所有元素小写



我有一个表,它有一个名为"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))); 

相关内容

  • 没有找到相关文章

最新更新