更新表格并插入VARBINARY数据

17

当我运行SQL查询时,我得到了如下的结果:

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

我想要插入的数据看起来像:

'00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF...FFF'

如何完成这个查询?

查询看起来像这样:

UPDATE <table> SET VARBINARY_DATA = '00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF....' WHERE ID = 12
1个回答

49

从SQL Server 2005开始,CONVERT函数可以实现你想要的功能:

CONVERT(varbinary(2000), '00001340132401324...', 2)
将二进制转换为其他格式的样式如下:
  • 0:原始数据,ASCII代码点变成二进制字节,UTF-16代码点变成两个字节。
  • 1:十六进制格式,以“0x”为前缀
  • 2:十六进制格式,不以“0x”为前缀
将字符转换为二进制格式0:
  • charvarchar数据(例如ASCII,ISO-8859-1)变成二进制字节。对于单个字符编码,这意味着每个字符一个字节。
  • ncharnvarchar数据(即UTF-16)变成每个字符两个字节,采用大端格式,因此N'ABC'变成0x410042004300
将十六进制转换为二进制格式1和2:
  • 每两个输入的十六进制数字转换为一个字节
  • 如果输入无效,则会出现错误
  • 不允许使用空格和标点符号
请参见MSDN: 如果需要UTF-8,请参见我的答案,其中提供了将文本转换为UTF-8的UDF:

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接