возможно ли в PostgreSQL 8.4 объединить несколько целых чисел (int4) со значением в байтах?
int4
Например:
5::int4 || 1::int4
должно привести к значению байта с (0x05 0x00 0x00 0x00 0x01 0x00 0x00 0x00), предполагая, что машина с прямым порядком байтов.
(0x05 0x00 0x00 0x00 0x01 0x00 0x00 0x00)
Что ж, int4send преобразует int4 в байту, но я подозреваю, что по названию он всегда будет использовать порядок сети.
int4send
, то есть:
steve@steve@[local] =# select int4send(3); int4send ------------ \x00000003
событие вавтомат amd64.
Косвенное преобразование может быть выполнено с помощью select byteain(bit_out(5::bit(32) || 1::bit(32))) или select int4send(5)||int4send(1), что приводит к 0000000000000000000000000000010100000000000000000000000000000001.
select byteain(bit_out(5::bit(32) || 1::bit(32)))
select int4send(5)||int4send(1)
0000000000000000000000000000010100000000000000000000000000000001
. Вы также можете использовать двоичные строковые функции для преобразования в нужную кодировку.См. ответ Мартена Фоке в списке pgsql-general для решения аналогичной проблемы.Вы должны иметь возможность просто объединить результирующие bytea значения из его функции или аналогичной функции (но пометить ее как стабильную, а не энергозависимую).
bytea