Concat整数作为bytea的二进制字符串

时间:2012-01-12 18:17:10

标签: postgresql

是否可以在PostgreSQL 8.4中将多个整数(int4)值连接到bytea值?

例如:

5::int4 || 1::int4
假设有一个小端机器,

应该导致带有(0x05 0x00 0x00 0x00 0x01 0x00 0x00 0x00)的bytea值。

2 个答案:

答案 0 :(得分:2)

好吧,int4send会将int4转换为bytea,但我怀疑它会一直使用网络排序。

即:

steve@steve@[local] =# select int4send(3);
  int4send  
------------
 \x00000003
amd64机器上的

事件。

答案 1 :(得分:1)

可以使用select byteain(bit_out(5::bit(32) || 1::bit(32)))select int4send(5)||int4send(1)进行间接转换,从而产生0000000000000000000000000000010100000000000000000000000000000001

您还可以使用binary string functions转换为所需的编码。有关类似问题的解决方案,请参阅pgsql-general列表中的Maarten Foqué's answer。您应该能够简单地连接其函数或类似函数中的结果bytea值(但将其标记为stable而不是volatile)。