首页 > 解决方案 > 如何在 psql 查询中连接 jsonb 数组中的字符串?

问题描述

我想jsonb在我的查询中动态连接数组中的字符串,psql如下所示:

with cte as (select generate_series(1, 3) as num) select '["name", "number"||cte.num]'::jsonb as res from cte;

但我收到此错误:

ERROR:  invalid input syntax for type json
LINE 1: ...e as (select generate_series(1, 5) as num) select '["name", ...
                                                             ^
DETAIL:  Token "|" is invalid.
CONTEXT:  JSON data, line 1: ["name", "number"|...

所以,我在这里生成从 1 到 3 的数字,我想在我的jsonb数组中附加这些数字和“数字”字符串。这就是我想要的结果:

         res                 
----------------------
 ["name", "number1"]
 ["name", "number2"]
 ["name", "number3"]

请告诉我如何得到这个。谢谢。

标签: postgresqlpsql

解决方案


像这样的东西应该工作。

SELECT ( '["name", "number'|| num ||'"]' )::jsonb as res 
FROM generate_series(1, 3) num

您将管道作为字符添加到列表中的元素之后。您应该首先构建数组字符串(在括号中),然后将其转换为jsonb.


推荐阅读