【发布时间】:2015-10-09 16:07:51
【问题描述】:
我正在尝试通过以下 SQL 更新类型为 VARBINARY(MAX) 的列:
UPDATE dbo.__MigrationHistory
SET Model = 0x1F8B080000000000046
WHERE MigrationId = '201510051415248_Test2'
我希望该列设置为0x1F8B080000000000046,但它设置为0x01F8B080000000000046
如何将模型设置为所需的值:0x1F8B080000000000046?
谢谢
更新 1。
0x1F8B080000000000046 只是我设法复制问题的随机值。我没有输入原始值,因为它由 43679 个符号组成。 MOST 令人困惑的是数据库中已经存在相同的值,我正在从另一行复制该值并将其粘贴到我的更新查询中,但是如果从选择中更新它,它将起作用,例如:
UPDATE dbo.__MigrationHistory
SET Model = (
SELECT Model
FROM dbo.__MigrationHistory
WHERE MigrationId = '201510041415248_Test1'
) -- is equal to 0x1F8B080000000000046
WHERE MigrationId = '201510051415248_Test2'
但显然我不能在最初没有该值的数据库上使用这种方法。
【问题讨论】:
-
所以你想将它的长度设置为小数字节?
-
@hvd 我只希望 0x1F8B080000000000046 值出现在我的表中的模型列中
-
@AlexK。确定不相关?但是,如果我正在更新的值具有 MAX 长度,并且由于多余的前导 0 最后一个字符被修剪掉并且我得到无效的 varbinary,该怎么办?
-
@Vladimirs:您只能存储整个字节的值,因此您要求的内容是不可能的。那么问题来了,为什么要设置那个特定的值呢?
-
@Vladimirs:varbinary 文字没有 43679 个字符,它必须是偶数。复制时可能会得到一个连接值。
标签: sql sql-server sql-server-2008 varbinary