Как объединить строки в массиве jsonb в запросе psql? - PullRequest
0 голосов
/ 13 января 2020

Я хочу динамически объединять строки в массиве 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"]

Скажите, пожалуйста, как мне это получить. Спасибо.

1 Ответ

1 голос
/ 13 января 2020

Примерно так должно работать.

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

Вы добавляли каналы в виде символов после элемента в списке. Сначала вы должны построить строку массива (в скобках), а затем преобразовать ее в jsonb.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...