Home > database >  How to convert Oracle TO_NUMBER to SQL Server
How to convert Oracle TO_NUMBER to SQL Server

Time:12-08

I am migrating some SQL scripts from Oracle to SQL Server and have come across an issue when trying to convert Oracles TO_NUMBER into T-SQL code. Looked through the web for some time but never found the answer but they all say to convert hex using CAST or CONVERT with VARBINARY.

An example of the issue I am getting is below.

In Oracle:

select
    to_number( '000000000000000000001111', 'XXXXXXXXXXXXXXXXXXXXXXXX' )
from
    dual

returns 4369

When trying to use T-SQL CONVERT:

select
    CONVERT(VARBINARY, '000000000000000000001111')

returns 0x303030303030303030303030303030303030303031313131

and

select
    CONVERT(INT, CONVERT(VARBINARY, '000000000000000000001111'))

returns 825307441

Any help would be greatly appreciated.

Thanks

CodePudding user response:

TSQL has binary literals, so you can write it like this:

select  CONVERT(INT, 0x000000000000000000001111)

outputs

4369

If you are starting with a hex string, you can use convert with the binary style of 1, or 2, so

 select convert(int, convert(varbinary(1024),'000000000000000000001111', 2))

outputs

4369

CodePudding user response:

This should do the work.

select convert(bigint, convert(Varbinary(MAX), '000000000000000000001111',2))
  • Related