When converting string into Binary, I mean converted from the below data type
CHAR
VARCHAR
NCHAR
NVARCHAR
TEXT
NTEXT to a BINARY data type of "unequal length", SQL Server truncates the data on the RIGHT!
Here is how...
Declare @Varchar Varchar(6), @Binary Binary(2)
Set @Varchar = 123456
Set @Binary = Cast(@Varchar as Binary(2))
Select @Varchar [Actual], Cast(@Binary as Varchar(6)) [Converted]
Go
When converting Numbers into Binary, The data is truncated on the LEFT and Padding is done with hexadecimal "zeros"
Wondering how.... ?
Declare @Source INT, @Target Binary(2)
Set @Source = 123456
Set @Target = Cast(@Source as Binary(2))
Select @Source [Actual], @Target, Cast(@Target as Int) [Converted]
Go
Actually, The Number should have been converted into 0x1E240
But, according to the unequal length of the target conversion, It truncates on LEFT and padding with "0" instead,
I mean "0x1E240" becomes "0x0E240".
So, When converting back to numbers from binary - It becomes 57920
So, Beware of conversion from or to Binary!!!
CHAR
VARCHAR
NCHAR
NVARCHAR
TEXT
NTEXT to a BINARY data type of "unequal length", SQL Server truncates the data on the RIGHT!
Here is how...
Declare @Varchar Varchar(6), @Binary Binary(2)
Set @Varchar = 123456
Set @Binary = Cast(@Varchar as Binary(2))
Select @Varchar [Actual], Cast(@Binary as Varchar(6)) [Converted]
Go
When converting Numbers into Binary, The data is truncated on the LEFT and Padding is done with hexadecimal "zeros"
Wondering how.... ?
Declare @Source INT, @Target Binary(2)
Set @Source = 123456
Set @Target = Cast(@Source as Binary(2))
Select @Source [Actual], @Target, Cast(@Target as Int) [Converted]
Go
Actually, The Number should have been converted into 0x1E240
But, according to the unequal length of the target conversion, It truncates on LEFT and padding with "0" instead,
I mean "0x1E240" becomes "0x0E240".
So, When converting back to numbers from binary - It becomes 57920
So, Beware of conversion from or to Binary!!!
No comments:
Post a Comment