2017-10-18 8 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) ("10을 기반으로하는 기본 16 'C404158996CD을'변환 ') 여기

는'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

당신은 hex_to_integer과 함께 translate 기능을 시도 할 수 시도 할 수 있습니다.

예컨대 : Vertica의에 대한

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

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