Postgresql将位变化转换为整数

Postgresql将位变化转换为整数,postgresql,bits,Postgresql,Bits,在postgresql文档中搜索有关将位变量转换为整数的信息 但是找不到任何信息 select '011111'::bit(4)::varbit(4)::integer as varbit 感谢您的回复。单向: SELECT b, lpad(b::text, 32, '0')::bit(32)::int FROM ( VALUES ('01'::varbit) ,('011111') ,('111') ) t (b); 结果: b | lpad

在postgresql文档中搜索有关将位变量转换为整数的信息

但是找不到任何信息

select '011111'::bit(4)::varbit(4)::integer as varbit
感谢您的回复。

单向:

SELECT b, lpad(b::text, 32, '0')::bit(32)::int
FROM (
    VALUES
     ('01'::varbit)
    ,('011111')
    ,('111')
 ) t (b);
结果:

b      | lpad
-------+------
01     |    1
011111 |   31
111    |    7
相关答复:


假设我们的表有3列3行。我们可以用以下方法进行模拟:

选择*
从(
值('row1',1::int,12::bit(8)::varbit),
('row2',2::int,23::bit(8)::varbit),
('row3',3::int,34::bit(8)::varbit)
)as T(A,B,C);
如您所见,第一列是
varchar
,第二列是
int
,第三列是
varbit

让我们将第三列转换为
int

选择C::位(8)::int
从(
值('row1',1::int,12::bit(8)::varbit),
('row2',2::int,23::bit(8)::varbit),
('row3',3::int,34::bit(8)::varbit)
)as T(A,B,C);
==C==
12
23
34

关键是,您必须先将其转换为
bit(n)
,然后才能将
bit(n)
转换为
varbit
。同样的情况也适用于
int
varbit

谢谢,但我的意图是我有一个类型为bit variable的列,我想将其转换为integer@Pals:演员阵容<代码>::第(32)位在我的初稿中缺失。修复并添加了一个演示。它只适用于32位。如果我有超过32位的信息,那么解决方案是什么?@Pals:你如何将其转换为4字节整数,它不能容纳超过32位的信息?你确实要求过。下一步是64位的
bigint