当我运行sql查询时,我得到了如下信息:


不允许从数据类型varchar隐式转换为数据类型
varbinary ....使用CONVERT函数运行此查询。 (严重性
16)`


我要插入的数据看起来像

'00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF...FFF'


如何完成此查询?

查询看起来像:

UPDATE <table> SET VARBINARY_DATA = '00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF....' WHERE ID = 12

最佳答案

从SQL Server 2005开始,CONVERT可以满足您的要求:

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


转换为二进制/从二进制转换的样式为:


0:原始数据,ASCII代码点变为二进制字节,UTF-16代码点每个变为2个字节。
1:十六进制格式,前缀为“ 0x”
2:十六进制格式,不以“ 0x”为前缀


要将字符转换为格式0的二进制文件:


charvarchar数据(例如ASCII,ISO-8859-1)成为二进制字节。对于单字符编码,这意味着每个字符一个字节。
ncharnvarchar数据(即UTF-16)分别变为两个字节,采用大端顺序格式,因此N'ABC'变为0x410042004300


用于将十六进制转换为格式1和2的二进制文件:


每两个输入的十六进制数字变为一个字节
如果输入无效,则发生错误
不允许使用空格和标点符号


请参阅MSDN:


http://msdn.microsoft.com/en-us/library/ms187928.aspx


如果您需要UTF-8,请在此处查看我的答案,以获取将文本转换为UTF-8的UDF:


Compute MD5 hash of a UTF8 string

关于sql-server - 更新表插入VARBINARY数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9021873/

10-11 22:23
查看更多