2017-10-18 14 views
1

VerticaデータベースでMACアドレスを整数形式に変換したい。彼らは、以下のような形をしている -データベースのMACアドレスを整数に変換する

1e:07:02:15:3a:88 
1e:07:02:1b:64:ab 
... 

私は整数に変換するには、次の問合せを使用 -

MACはMACアドレスを含む列の名前で、Network_tableはテーブル名である
SELECT hex_to_integer(MAC) FROM Network_table; 

それは私に次のエラー表示される -

数値の無効な入力構文: "0x1eが表示:07:02:15:3A:88" のアドレスが含まれているため

私はその考えます":"記号。どのように私はこの問題を克服できますか?あなたが必要とする

答えて

0

使用REGEXP_REPLACE()。

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


CONV('C404158996CD', 16,10)( " 'C404158996CDは' 10のベースにベース16から変換")ここ

'をC404158996CDは、' MACアドレスです。

それとも、あなたがhex_to_integerとともに、translate機能を試すことができ、この

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

を試すことができます。

例えば:にVertica用

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

hex_to_integer 
---------------- 
33015448550024 
(1 row) 
関連する問題