172 похожих чатов

А есть какой-нибудь способ преобразовать тип данных record к array

(точнее, к bigint[])?

У меня пока вот так сделано, через преобразование в текст, а потом в массив:

SELECT string_to_array(translate(t::text, '()', ''), ',')::bigint[]
FROM (VALUES ($1)) AS t

(при этом ещё проблема в том, что $1 приобретает тип text, но это ладно, это вторая проблема)

6 ответов

28 просмотров
Dmitry-Krylov Автор вопроса

Ещё вариант -- прогнать через JSON: with t as (values (1::int,2::int,3::int)) select jsonb_array_elements(jsonb_path_query_array(row_to_json(t)::jsonb, '$.*'))::int from t; Но тоже какая-то фигня...

record – сколько в ней колонок? есть синтаксис (t).* или (t).column_name вот читаем запись целиком — схлопывается: nik=# select t from pg_type as t limit 1; t ----------------------------------------------------------------------------------------------------- (16,bool,11,10,1,t,b,B,t,t,",",0,-,0,1000,boolin,boolout,boolrecv,boolsend,-,-,-,c,p,f,0,-1,0,0,,,) (1 row) а вот тут берём конкретную колонку из неё: nik=# select (t).oid from pg_type as t limit 1; oid ----- 16 (1 row)

NikolayS
дальше array_agg

или — иногда удобнее — select array(select ...)

NikolayS
или — иногда удобнее — select array(select ...)

вот извращение целиком: select array_agg((t).oid::int8 order by oid) from pg_type as t;

Dmitry-Krylov Автор вопроса
NikolayS
record – сколько в ней колонок? есть синтаксис (t)...

У меня это подставляемый параметр, там большой запрос, в котором надо $1 привести к массиву: SELECT ... FROM ... ( SELECT string_to_array(translate(t::text, '()', ''), ',')::bigint[] FROM (VALUES (${suborgIds_*})) AS t ) AS suborgIds_ ...

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта