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

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

问题描述:

我想在Vertica数据库中将MAC地址转换为整数格式。他们在形式像下面 -将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”

我认为它是因为地址包含“:”符号。任何想法我怎么能克服这个问题?

使用REGEXP_REPLACE()的Vertica的。

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

你需要,
CONV('C404158996CD', 16,10)( “从基地16转换 'C404158996CD' 为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)