我想在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是表名。
它显示以下错误 -
数字的输入语法无效:“0x1e:07:02:15:3a:88”
我认为是因为地址包含“:”符号。我知道如何克服这个问题?
答案 0 :(得分:2)
您可以尝试translate
功能以及hex_to_integer
。
E.g:
dbadmin=> select hex_to_integer(translate('1e:07:02:15:3a:88',':',''));
hex_to_integer
----------------
33015448550024
(1 row)
答案 1 :(得分:0)
你需要,
CONV('C404158996CD', 16,10)
("转换' C404158996CD'从16号基地到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
答案 2 :(得分:0)
对vertica使用regexp_replace()。
SELECT hex_to_int(regexp_replace('1e:07:02:15:3a:88',':'))