2017-10-18 1 views
1

Ich möchte MAC-Adresse zu Integer-Format in Vertica-Datenbank zu konvertieren. Sie sind in das untere Formular ein wie -Konvertieren MAC-Adresse zu Integer in Datenbank

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

habe ich die folgende Abfrage, sie zu konvertieren integer -

SELECT hex_to_integer(MAC) FROM Network_table; 

wo MAC der Spaltenname-Adressen enthalten, MAC und Network_table ist der Name der Tabelle.

Es wird mir den folgenden Fehler zeigt -

ungültige Eingabesyntax für numerische: "0x1e: 07: 02: 15: 3a: 88"

Ich denke sein, weil die Adresse enthält ":" Symbole. Irgendeine Idee, wie ich dieses Problem überwinden kann?

Antwort

0

Verwenden REGEXP_REPLACE() für vertica.

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

Sie benötigen,
CONV('C404158996CD', 16,10) ("convert 'C404158996CD' von der Basis 16-10 Basis")

hier 'C404158996CD' ist eine MAC-Adresse.

Oder Sie können versuchen, diese

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

Sie translate Funktion könnten versuchen, zusammen mit hex_to_integer.

Z. B .:

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

hex_to_integer 
---------------- 
33015448550024 
(1 row) 
Verwandte Themen