Concat целые числа как двоичные строки в bytea - PullRequest
1 голос
/ 12 января 2012

возможно ли в PostgreSQL 8.4 объединить несколько целых чисел (int4) со значением в байтах?

Например:

5::int4 || 1::int4

должно привести к значению байта с (0x05 0x00 0x00 0x00 0x01 0x00 0x00 0x00), предполагая, что машина с прямым порядком байтов.

Ответы [ 2 ]

2 голосов
/ 13 января 2012

Что ж, int4send преобразует int4 в байту, но я подозреваю, что по названию он всегда будет использовать порядок сети.

, то есть:

steve@steve@[local] =# select int4send(3);
  int4send  
------------
 \x00000003

событие вавтомат amd64.

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

Косвенное преобразование может быть выполнено с помощью select byteain(bit_out(5::bit(32) || 1::bit(32))) или select int4send(5)||int4send(1), что приводит к 0000000000000000000000000000010100000000000000000000000000000001.

. Вы также можете использовать двоичные строковые функции для преобразования в нужную кодировку.См. ответ Мартена Фоке в списке pgsql-general для решения аналогичной проблемы.Вы должны иметь возможность просто объединить результирующие bytea значения из его функции или аналогичной функции (но пометить ее как стабильную, а не энергозависимую).

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