SSMS 中 varbinary 插入的附加 0
Additional 0 in varbinary insert in SSMS
我在尝试将 varbinary(max) 字段从一个数据库移动到另一个数据库时遇到问题。
如果我这样插入:
0xD0CF11E0A1B11AE10000000
它以额外的“0”开头:
0x0D0CF11E0A1B11AE10000000
我无法摆脱这个。我尝试了很多工具,例如 SSMS 导出工具或 BCP,但都没有成功。无论如何,我最好在脚本中解决它。
并且对 varbinary 了解不多(程序生成它),我的唯一目标是复制它:)
0xD0CF11E0A1B11AE10000000
此值包含奇数个字符。 Varbinary 存储字节。每个字节由 恰好两个 十六进制字符表示。您要么缺少一个字符,要么没有存储字节。
这里,SQL 服务器猜测最高位是零,这不会改变字符串的数值。例如:
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
这只是 SQL 服务器的区别,假设 varbinary 总是代表字节。
我在尝试将 varbinary(max) 字段从一个数据库移动到另一个数据库时遇到问题。 如果我这样插入: 0xD0CF11E0A1B11AE10000000 它以额外的“0”开头: 0x0D0CF11E0A1B11AE10000000
我无法摆脱这个。我尝试了很多工具,例如 SSMS 导出工具或 BCP,但都没有成功。无论如何,我最好在脚本中解决它。
并且对 varbinary 了解不多(程序生成它),我的唯一目标是复制它:)
0xD0CF11E0A1B11AE10000000
此值包含奇数个字符。 Varbinary 存储字节。每个字节由 恰好两个 十六进制字符表示。您要么缺少一个字符,要么没有存储字节。
这里,SQL 服务器猜测最高位是零,这不会改变字符串的数值。例如:
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
这只是 SQL 服务器的区别,假设 varbinary 总是代表字节。