手动将varbinary插入表中

时间:2017-07-28 13:44:05

标签: sql sql-server

尝试使用mssql手动将数据插入VARBINARY(max)列:

BEGIN
    INSERT INTO [SomeTable]([varbinary]) 
        Values (0x255044462D312.....Long VARBINARY(max).....CCB6ED46F9)
END

然而,当它被插入时,将添加额外的标题0(0x 0 255 ...)并且将删除尾随9(... 46F_)当我稍后尝试使用此内容将被破坏。

无法弄清楚为什么会这样。

2 个答案:

答案 0 :(得分:2)

解决,

显然msssql保留了一些内部校验和并将其添加到varbinary中,所以如果你从表中复制粘贴它并尝试再次插入它,sql将会混淆并尝试“纠正”这个内部校验和。解决方法是从导出表数据的db生成脚本。此生成的脚本中的输出不包含内部校验和,您可以在更新和插入等中使用它。

答案 1 :(得分:0)

尝试显式转换:

CONVERT(varbinary(max), '00001340132401324...', 2)

最后一个参数保留用于转换类型。 查看二进制样式部分: https://docs.microsoft.com/en-us/sql/t-sql/functions/cast-and-convert-transact-sql