2017-10-18 123 views
1

我想在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」

我認爲它是因爲地址包含「:」符號。任何想法我怎麼能克服這個問題?

回答

0

使用REGEXP_REPLACE()的Vertica的。

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

你需要,
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 
2

你可以嘗試translate功能,具有hex_to_integer一起。

例如爲:

dbadmin=> select hex_to_integer(translate('1e:07:02:15:3a:88',':','')); 

hex_to_integer 
---------------- 
33015448550024 
(1 row)