Hi ,
I want to convert hexadecimal to numeric data type. Using directly Cast or Convert function is not working.
Please suggest an alternative how to retrieve the numeric value of binary data .
Thanks in advance
Regards
Srinivas Govada
Srinivas,
Please show us what does not work for you. The following is
fine:
declare @.n numeric(10,2)
set @.n = 1.23
select cast(@.n as varbinary(20))
-- returns 0x0A0200017B000000
select cast(0x0A0200017B000000 as numeric(10,2))
If you are trying to convert binary representations of
[float] values to [float], you can use this code:
declare @.b binary(8)
set @.b = 0xC094D954FB549F95
declare @.s bit
declare @.e smallint
declare @.m float
set @.s = case when substring(@.b,1,1) >= 0x80 then 1 else 0 end
set @.e = (substring(@.b,1,2)&32752)/16-1022
set @.m = cast(substring(@.b,6,3) as int)/2097152e0/536870912e0
+ (substring(@.b,2,4)&268435455)/536870912e0+0.5e0
select case when @.s = 1 then -1e0 else 1e0 end * @.m * power(2e0,@.e)
Steve Kass
Drew University
www.stevekass.com
Srinivas Govada@.discussions.microsoft.com wrote:
> Hi ,
>
> I want to convert hexadecimal to numeric data type. Using directly Cast
> or Convert function is not working.
>
> Please suggest an alternative how to retrieve the numeric value of
> binary data .
>
> Thanks in advance
>
> Regards
>
> Srinivas Govada
>
>
>
>
No comments:
Post a Comment