Функция в Postgres для преобразования varchar в большое целое число - PullRequest
1 голос
/ 01 октября 2009

У меня есть столбец varchar в Postgres 8.3, который содержит значения вроде: '0100011101111000'

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

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

'000001' -> 1,0

'000010' -> 2,0

'000011' -> 3,0

Спасибо!

1 Ответ

5 голосов
/ 01 октября 2009

Преобразуется в битовую строку, затем в целое число.

Пример : '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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...