搜索postgresql文档http://www.postgresql.org/docs/8.4/interactive/functions-bitstring.html,了解有关将位变换为整数
的信息但无法找到任何信息。
select '011111'::bit(4)::varbit(4)::integer as varbit
感谢您的回复。
答案 0 :(得分:6)
一种方式:
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
相关答案:
答案 1 :(得分:1)
假设我们的表格有3列和3行。我们可以使用以下方法进行模拟:
select *
from (
values ('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
:
select C::bit(8)::int
from (
values ('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
也是一样。