Postgresql转换位变为整数

时间:2014-07-29 17:00:04

标签: postgresql bits

搜索postgresql文档http://www.postgresql.org/docs/8.4/interactive/functions-bitstring.html,了解有关将位变换为整数

的信息

但无法找到任何信息。

select '011111'::bit(4)::varbit(4)::integer as varbit

感谢您的回复。

2 个答案:

答案 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。从intvarbit也是一样。