如何在Postgresql中将位类型转换为bytea类型

如何在Postgresql中将位类型转换为bytea类型,postgresql,Postgresql,我想在postgresql中将位类型转换为bytea。 像这样 select (b'1010110011001100' & b'1011000011110000')::bytea; 但是,出现了错误 ERROR: cannot cast type bit to bytea LINE 1: select (b'1010110011001100' & b'1011000011110000')::bytea; 我只想对位字符串执行一个操作,并将其转换为bytea类型 select

我想在postgresql中将位类型转换为bytea。 像这样

select (b'1010110011001100' & b'1011000011110000')::bytea;
但是,出现了错误

ERROR:  cannot cast type bit to bytea
LINE 1: select (b'1010110011001100' & b'1011000011110000')::bytea;
我只想对位字符串执行一个操作,并将其转换为bytea类型

select decode((b'1010110011001100' & b'1011000011110000')::text,'escape')


将位值转换为十六进制并使用
decode()


你分析了吗?是的,我已经读过了。但是,我找不到任何解决这个问题的线索。你为什么要保存为
bytea
,以及你的查询的预期结果是什么?最初,数据以bytea类型存储在数据库中。要执行逐位操作,它将从bytea转换为bit。但是,计算出的位不能反转为bytea。@Boblishus我写了一个答案,您可以试试。这似乎是正确的。但是,如果是300位,则出现错误
错误:整数超出范围
。我想对超过1000位的位进行逐位运算。计算出的位可能必须划分为一个小范围位。然后,按照您的建议将位转换为bytea。一种方法是将文本表示形式划分为32个十六进制数字部分(使用bigint)。你也可以尝试extension.ught PostgreSQL,即使是现在(2019!)也没有从
varbit
bytea
的有效转换选项!?
select ((b'1010110011001100' & b'1011000011110000')::text)::bytea
select decode(to_hex((b'1010110011001100' & b'1011000011110000')::int), 'hex')

 decode 
--------
 \xa0c0
(1 row)