2009-10-01 2 views
1

У меня есть столбец VARCHAR в Postgres 8.3, который содержит значение, как: «0100011101111000»Функции в Postgres для преобразования VARCHAR к большому целому числу

мне нужна функция, которая будет рассматривать эту строку, чтобы быть числом в базе 2 и выплескивает числовое значение в базе 10. Имеет смысл?

Так, например:

'000001' -> 1,0

'000010' -> 2,0

'000011' -> 3,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) 
+0

Awesome! Именно то, что мне нужно. Спасибо, что поделились своей мудростью. – 2009-10-02 08:55:25

Смежные вопросы