Postgres将jsonb值串联/聚合为一个字符串

问题描述

我有一个带有entitiesjsonb的表dict,该列包含如下所述的语言环境:

{
  "fr": {
    "key1": "french1","key2": "french2"
  },"en": {
    "key1": "value1","key2": "value2","key3": "value3"
  }
}

在同一张表中,我创建了一个新的tsvectoren_locale,该列需要保存dict -> 'en'值的串联的tsvector。

对于上面的示例,我想实现以下内容:值的串联(不需要保留顺序):

value1 value2 value3值之间用空格隔开。

这是为了填充tsvectorto_tsvector('value1 value2 value3')

任何建议都会很棒!非常感谢!

解决方法

您的问题不清楚您到底想要什么。您只想根据问题的TITLE来串联dict -> 'en'中所有键的值。

所以试试这个:

select 
(select string_agg(j.value,' ') 
from jsonb_each_text(dict->'en') j) "values" from your_table

DEMO

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...