在psql中执行位翻转操作报错operator does not exist: bit & integer,求解答
问题分析与解决
你的操作核心错误是类型不匹配:
b'11'是PostgreSQL的bit类型(固定长度的位串)~0是对整数0做按位取反,返回的是integer类型(值为-1)
PostgreSQL没有定义bit与integer之间的&位运算操作符,因此触发报错。
解决方法
根据你的需求,有两种处理方式:
- 将整数结果转为对应长度的
bit类型,保证运算两边类型一致:
select b'11' & ~0::bit(2);
这里::bit(2)把整数~0转为2位的位串b'11',与b'11'做与运算后结果为b'11'。
- 如果你的实际需求是对
bit类型值直接取反,无需借助整数,直接对bit值使用~操作符:
select ~b'11';
该语句会返回b'00'(对应2位位串的取反结果)。
内容的提问来源于stack exchange,提问作者user20543568
相关产品推荐
相关产品推荐

