在 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',':'))
我想在 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',':'))