当我尝试将varbinary(max)字段从一个DB移动到另一个DB时遇到问题。 如果我这样插入: 0xD0CF11E0A1B11AE10000000 结果以一个额外的“ 0”开头: 0x0D0CF11E0A1B11AE10000000
我无法摆脱这一点。我尝试了许多工具,例如SSMS导出工具或BCP,但没有成功。最好还是用脚本解决它。
对varbinary并没有太多的了解(程序会生成它),我唯一的目标是复制它:)
答案 0 :(得分:1)
0xD0CF11E0A1B11AE10000000
此值包含奇数个字符。 Varbinary存储字节。每个字节都由恰好两个十六进制字符表示。您丢失了一个字符,或者未存储字节。
在这里,SQL Server猜测最高有效数字是零,这不会更改字符串的数字值。例如:
select 0xD0C "value"
,cast(0xD0C as int) "as_integer"
,cast(0x0D0C as int) "leading_zero"
,cast(0xD0C0 as int) "trailing_zero"
value 3_char leading_zero trailing_zero
---------- --------- --------------- ----------------
0d0c 3340 3340 53440
或者:
select 1 "test"
where 0xD0C = 0x0D0C
test
-------
1
假设varbinary始终表示字节,这只是SQL Server的不同。