在数据库中将MAC地址转换为整数

时间:2017-10-18 03:36:01

标签: sql database hex 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是表名。

它显示以下错误 -

  

数字的输入语法无效:“0x1e:07:02:15:3a:88”

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

3 个答案:

答案 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',':'))