我可以检索 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)
我正在使用 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)