当我在查询
下运行时,尝试理解varchar到varbinary的转换select CAST(3 as varbinary(512))
结果是0x00000003 但是如果我使用下面的查询将0x00000003强制转换回varchar,那么结果就是' '
cast(0x00000003 as varchar)
以下查询实际上给我的结果为3。
select cast(0x33 as varchar)
我也尝试使用转换,但结果是一样的。如果有人能解释这种行为,我将不胜感激。
答案 0 :(得分:6)
3
不是varchar
。这是一个int。因此,您可以看到存储在twos complement中的signed int的二进制格式。
'3'
是varchar
select CAST('3' as varbinary(512))
返回0x33
(小数51,3
的{{3}}
答案 1 :(得分:0)
您应该将binary
转换为int
,然后将其转换为varchar
以获得相同的号码。
select cast(cast(CAST(3 as varbinary(512)) as int) as varchar)