更新表插入 VARBINARY 数据 [英] Update table inserting VARBINARY data
问题描述
当我运行 sql 查询时,我得到了这样的信息:
When I run the sql query I got something like this :
不允许从数据类型 varchar 到数据类型的隐式转换varbinary.... 使用 CONVERT 函数运行此查询.(严重性16)`
Disallowed implicit conversion from data type varchar to data type varbinary.... Use the CONVERT function to run this query. (severity 16)`
我要插入的数据看起来像
The data I want to insert looks like
'00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF...FFF'
如何完成这个查询?
查询看起来像:
UPDATE <table> SET VARBINARY_DATA = '00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF....' WHERE ID = 12
推荐答案
从 SQL Server 2005 开始,CONVERT 可以满足您的需求:
From SQL Server 2005 onwards CONVERT does what you want:
CONVERT(varbinary(2000), '00001340132401324...', 2)
转换成/从二进制的样式是:
The styles for converting to/from binary are:
- 0:原始数据,ascii 代码点变成二进制字节,UTF-16 代码点变成两个字节.
- 1:十六进制格式,前缀为'0x'
- 2:十六进制格式,不以'0x'为前缀
用于将字符转换为格式 0 的二进制:
For converting characters to binary in format 0:
char
或varchar
数据(例如 ASCII、ISO-8859-1)变成二进制字节.对于单字符编码,这意味着每个字符一个字节.nchar
或nvarchar
数据(即 UTF-16)每个变成两个字节,采用 big-endian 格式,所以N'ABC'
变成0x410042004300
char
orvarchar
data (e.g. ASCII, ISO-8859-1) become binary bytes. For single character encodings this means one byte per character.nchar
ornvarchar
data (i.e. UTF-16) become two bytes each, in big-endian format, soN'ABC'
becomes0x410042004300
用于将十六进制转换为格式 1 和 2 的二进制:
For converting hex to binary in formats 1 and 2:
- 每两个输入的十六进制数字变成一个字节
- 如果输入的十六进制无效,则会发生错误
- 不允许使用空格和标点符号
请参阅 MSDN:
如果您需要 UTF-8,请在此处查看我的回答以了解将文本转换为 UTF-8 的 UDF:
If you need UTF-8 please see my answer here for a UDF which will convert text to UTF-8:
这篇关于更新表插入 VARBINARY 数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!