将varchar转换为varbinary

时间:2015-08-06 18:36:15

标签: sql sql-server

当我在查询

下运行时,尝试理解varchar到varbinary的转换
select CAST(3 as varbinary(512))

结果是0x00000003 但是如果我使用下面的查询将0x00000003强制转换回varchar,那么结果就是' '

cast(0x00000003 as varchar)

以下查询实际上给我的结果为3。

select cast(0x33 as varchar)

我也尝试使用转换,但结果是一样的。如果有人能解释这种行为,我将不胜感激。

2 个答案:

答案 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)