我可以检索 macaddr8 列作为数字吗?

Can I retrieve macaddr8 column as a number?

我正在使用 PostgreSQL 10。

如果我没理解错的话,macaddr8 列在内部存储为二进制数。

当我使用我的 python/pandas/sqlachemy 脚本检索数据时,我得到的是一个以列分隔的十六进制字节 '01:23:45:67:89:ab:cd:ef'.

的字符串

是否可以将其作为数字检索?

显然,没有为此内置的功能,但您可以使用:

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)