在 Vertica 中将 MAC 地址转换为整数

Convert MAC address to integer in Vertica

我想在 Vertica 数据库中将 MAC 地址转换为整数格式。它们的形式如下 -

1e:07:02:15:3a:88
1e:07:02:1b:64:ab
...

我使用以下查询将它们转换为整数 -

SELECT hex_to_integer(MAC) FROM Network_table;

其中 MAC 是包含 MAC 个地址的列名称,Network_table 是 table 名称。

它向我显示以下错误 -

Invalid input syntax for numeric: "0x1e:07:02:15:3a:88"

我认为是因为地址包含“:”符号。知道如何解决这个问题吗?

你需要,
CONV('C404158996CD', 16,10) ("convert 'C404158996CD' from base 16 to base 10")

这里 'C404158996CD' 是一个 mac 地址。

或者你可以试试这个

select
concat (left (b.mh, 2),':',mid(b.mh,3,2),':',mid(b.mh,5,2),':',mid(b.mh,7,2),':',mid(b.mh,9,2),':',mid(b.mh,11,2))

from (
    select lpad (hex (a.mac_as_int), 12, '0') as mh
    from (
        select 1234567890 as mac_as_int
    ) a
) b

您可以尝试 translate 功能,以及 hex_to_integer

例如:

dbadmin=> select hex_to_integer(translate('1e:07:02:15:3a:88',':',''));

 hex_to_integer
----------------
 33015448550024
(1 row)

对垂直使用 regexp_replace()。

SELECT hex_to_int(regexp_replace('1e:07:02:15:3a:88',':'))