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

Добрый день. Уважаемые гуру, подскажите решение. У меня есть триггер,

который передает в функцию значение OLD. В документации сказано, что OLD - это переменная типа record. пусть, например она будет (10,иванов ,вася) . Вот как бы эту переменную поместить в массив поэлементно вот так - [10] [иванов] [вася]. Сразу скажу, что array_agg(OLD.*) дает массив [10,иванов ,вася]. Может есть какой то синтаксис или команда, которая делает именно то что мне надо?

9 ответов

12 просмотров

Зубчатого массива да ещё и с индексами, отличными от int4 в PostgreSQL нет. Каких-то hashmap/hashdict тоже (которыми можно было бы напрямую оперировать). Навскидку, самое близкое, что могло бы тут подойти "из коробки" (с точки зрения структуры данных), это JSON(B). То есть необходимо создать объект вида: { "10": { "иванов": { "вася": { ... } } } } Но, кстати, зачем? Или я может быть вас не так понял? upd.: Может, вам нужно: [[10], ["иванов"], ["вася"]] (что тоже сомнительно) ?

Чем плоха передача old.* в функцию? funct(old.*) ?

ЯННП. Кажэтся, вы спутали синтаксис для массивов в постгресе

roman-Дубровин Автор вопроса
Petr
Зубчатого массива да ещё и с индексами, отличными ...

да нет, зачем зубчатый. Одномерный массив с количеством элементов по числу полей

roman-Дубровин Автор вопроса
Petr
Чем тогда [10,"иванов" ,"вася"] то не угодил?

Может неправильно объяснил. тем что это массив, где в 1 ячейке - строка со всеми значениями запроса через запятую . а надо в 3 ячейках - в каждой свое значение. в Вашем синтаксисе он не [10,"иванов" ,"вася"] а ["10,иванов,вася"]

А, ну, как-то так (достаточно "грязный" способ, кстати). Или, если можете позволить себе поставить стандартное расширение hstore (подозреваю, это более эффективный способ): CREATE EXTENSION hstore; SELECT avals(hstore(tbl)) from tbl;

roman-Дубровин Автор вопроса
Petr
А, ну, как-то так (достаточно "грязный" способ, кс...

спасибо, да прикольно. Я получил, что хотел, благодаря Вам, но проще)) Вообще так как OLD - это RECORD, а RECORD - это ROW тип, то row_to_json(OLD) дает мне прекрасно структурированный JSON, а дальше я с ним что хочу то и делаю. Спасибо за идею.

roman Дубровин
спасибо, да прикольно. Я получил, что хотел, благо...

А, ну, кто-ж знал, что вам не обязательно массив нужен на выходе. Успехов!

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
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
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта