sql - SSMS 中的 varbinary 插入附加 0
问题描述
当我尝试将 varbinary(max) 字段从一个数据库移动到另一个数据库时遇到问题。如果我这样插入: 0xD0CF11E0A1B11AE10000000 它会导致以额外的“0”开头:0x0D0CF11E0A1B11AE10000000
我无法摆脱这一点。我尝试了很多工具,例如 SSMS 导出工具或 BCP,但没有任何成功。无论如何,我最好在脚本中解决它。
并且没有太多关于 varbinary 的知识(程序生成它),我唯一的目标是复制它:)
解决方案
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
这只是 SQL Server 假设 varbinary 始终表示字节的区别。
推荐阅读
- c# - 如何在 ASP.NET Web 窗体中使用 ShowModalDialog Polyfill?
- javascript - 我们如何在鼠标悬停列值以显示工具提示时获取数据表“td”列值
- sql - 包含从 n+1 行到 n 行的值
- mongodb - 需要将数据转换成另一种格式
- c - 如何从c编程语言中的数组的最大大小中知道使用的大小?
- python - 用 python cvxpy 和约束解决最小二乘问题
- html - Flexbox:一个全宽块和两个下面有图像的块
- r - 根据两个条件删除矩阵中的行
- material-ui - 使用带有 Material UI 的新 Next.js Image 组件
- flutter - 为什么在没有任何变化的情况下颤动会创建新帧