如何在 SQL 服务器中设置 varbinary 列
How to set varbinary column in SQL server
我正在尝试按照 SQL:
更新 VARBINARY(MAX) 类型的列
UPDATE dbo.__MigrationHistory
SET Model = 0x1F8B080000000000046
WHERE MigrationId = '201510051415248_Test2'
我希望该列设置为 0x1F8B080000000000046
但它设置为 0x01F8B080000000000046
如何将模型设置为所需值:0x1F8B080000000000046
?
谢谢
更新 1.
0x1F8B080000000000046
只是我设法复制问题的随机值。我没有输入原始值,因为它由 43679 个符号组成。 MOST 令人困惑的是相同的值已经在数据库中,我正在从另一行复制该值并将其粘贴到我的更新查询中,但是如果从 [=35 更新它,它将起作用=] 例如:
UPDATE dbo.__MigrationHistory
SET Model = (
SELECT Model
FROM dbo.__MigrationHistory
WHERE MigrationId = '201510041415248_Test1'
) -- is equal to 0x1F8B080000000000046
WHERE MigrationId = '201510051415248_Test2'
但显然我不能在最初没有该值的数据库上使用该方法。
varbinary
以0x
开头显示的值是十六进制格式。
在十六进制格式中,值必须由偶数位组成。
SQL 服务器试图将值设置为 0x1F8B080000000000046
,但是由于它的位数为奇数,SQL 服务器将额外的 0
添加到开始使该值成为有效的十六进制值。
在不了解您的数据的情况下,我想您可能打算将其设置为:0x1F8B0800000000000046
。
您是否试图将 46
附加到 0x1F8B08
?如果是这样,您必须确保添加正确数量的零以得到偶数位数。
varbinary 未显示为奇数位。该值包含特定数量的字节,每个字节显示为两位数字。
(你可以写一个奇数位数的二进制字面量,例如0x123
,但它的意思和0x0123
是一样的。)
当您复制一个有 43679 位数字的值时,它不是来自数据库的正确值。很可能是因为它被连接起来,无论是在显示时还是在复制时。
我正在尝试按照 SQL:
更新 VARBINARY(MAX) 类型的列UPDATE dbo.__MigrationHistory
SET Model = 0x1F8B080000000000046
WHERE MigrationId = '201510051415248_Test2'
我希望该列设置为 0x1F8B080000000000046
但它设置为 0x01F8B080000000000046
如何将模型设置为所需值:0x1F8B080000000000046
?
谢谢
更新 1.
0x1F8B080000000000046
只是我设法复制问题的随机值。我没有输入原始值,因为它由 43679 个符号组成。 MOST 令人困惑的是相同的值已经在数据库中,我正在从另一行复制该值并将其粘贴到我的更新查询中,但是如果从 [=35 更新它,它将起作用=] 例如:
UPDATE dbo.__MigrationHistory
SET Model = (
SELECT Model
FROM dbo.__MigrationHistory
WHERE MigrationId = '201510041415248_Test1'
) -- is equal to 0x1F8B080000000000046
WHERE MigrationId = '201510051415248_Test2'
但显然我不能在最初没有该值的数据库上使用该方法。
varbinary
以0x
开头显示的值是十六进制格式。
在十六进制格式中,值必须由偶数位组成。
SQL 服务器试图将值设置为 0x1F8B080000000000046
,但是由于它的位数为奇数,SQL 服务器将额外的 0
添加到开始使该值成为有效的十六进制值。
在不了解您的数据的情况下,我想您可能打算将其设置为:0x1F8B0800000000000046
。
您是否试图将 46
附加到 0x1F8B08
?如果是这样,您必须确保添加正确数量的零以得到偶数位数。
varbinary 未显示为奇数位。该值包含特定数量的字节,每个字节显示为两位数字。
(你可以写一个奇数位数的二进制字面量,例如0x123
,但它的意思和0x0123
是一样的。)
当您复制一个有 43679 位数字的值时,它不是来自数据库的正确值。很可能是因为它被连接起来,无论是在显示时还是在复制时。