Могу ли я получить столбец macaddr8 как число? - PullRequest
1 голос
/ 11 марта 2019

Я использую PostgreSQL 10.

Если я правильно понимаю, столбцы macaddr8 внутренне хранятся как двоичные числа.

Когда я получаю данные с помощью моего скрипта python / pandas / sqlachemy, я получаю их в виде строки с шестнадцатеричными байтами, разделенными столбцами '01:23:45:67:89:ab:cd:ef'.

Можно ли извлечь его как число?

1 Ответ

1 голос
/ 12 марта 2019

Очевидно, для этого нет встроенной функции, но вы можете сделать это с помощью:

concat('x', replace(mac::text, ':', ''))::bit(64)::bigint

Пример:

WITH values (mac) AS (VALUES ('01:23:45:67:89:ab:cd:ef'::macaddr8))
SELECT
    mac,
    concat('x', replace(mac::text, ':', ''))::bit(64)::bigint AS num
FROM values;

... приводит к:

           mac           |        num        
-------------------------+-------------------
 01:23:45:67:89:ab:cd:ef | 81985529216486895
(1 row)
...