将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)