Postgres中的函数将varchar转换为大整数

时间:2009-10-01 10:49:01

标签: postgresql

我在Postgres 8.3中有一个包含以下值的varchar列:'0100011101111000'

我需要一个函数,将该字符串视为基数为2的数字,并在基数10中吐出数字。有意义吗?

所以,例如:

'000001' - > 1.0

'000010' - > 2.0

'000011' - > 3.0

谢谢!

1 个答案:

答案 0 :(得分:5)

转换为位字符串,然后转换为整数。

An example'1110'::bit(4)::integer - > 14

虽然你有不同长度的例子,并且在bigint之后,所以请使用bit(64)并使用lpad函数用零填充输入。

lpad('0100011101111000',64,'0')::bit(64)::bigint

这是一个完整的例子......

create temp table examples (val varchar(64));

insert into examples values('0100011101111000');
insert into examples values('000001');
insert into examples values('000010');
insert into examples values('000011');

select val,lpad(val,64,'0')::bit(64)::bigint as result from examples;

选择的结果是:

       val        | result 
------------------+--------
 0100011101111000 |  18296
 000001           |      1
 000010           |      2
 000011           |      3
(4 rows)