Hex-> int 변환문제 0 2 938

by 홍원표 [SQL Query] [2018.09.05 15:45:30]


안녕하세요.

mssql을 oracle로 변환작업을 하고 있는데요..

convert(bigint, convert(VARBINARY, concat(‘0’, right(‘0x00038’, len(‘0x00038’ -2)), 2),2);

0x00038 -> 000038 -> varbinary변환 -> bigint로변환

—> mssql 결과값 : 56

To_number(hextorow(‘000038’, ‘xxxxxx’)

—> 오라클 결과값 :56

위와같이 우선 해결책은 찾았는데.. ‘xxxxxx’도 데이터에 따라 가변적이서 문제가 될거 같고 혹시 더 좋은 방법이 없을까요?

 

by 마농 [2018.09.05 16:18:19]

hextoraw 는 불필요해 보이고
x 는 그냥 많이 적어주면 되요.
그 전에 실제로 가변길이가 존재하는지? 데이터 검증부터 헤보세요.

WITH t AS
(
SELECT '0x00038' v FROM dual
UNION ALL SELECT '0x000038' v FROM dual
UNION ALL SELECT '0x0000038' v FROM dual
)
SELECT v
     , TO_NUMBER(SUBSTR(v, 3), 'xxxxxxxxx') x
  FROM t
;

 


by 홍원표 [2018.09.05 16:20:13]

아..xxx갯수가 데이터 갯수랑 같을필요는 없네요. 넵 감사합니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입