更新表插入VARBINARY数据

问题描述 投票:16回答:1

当我运行SQL查询时,我得到这样的东西:

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

我要插入的数据看起来像

'00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF...FFF'

怎么做这个查询?

查询看起来像:

UPDATE <table> SET VARBINARY_DATA = '00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF....' WHERE ID = 12
sql-server sql-server-2000
1个回答
43
投票

从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:

© www.soinside.com 2019 - 2024. All rights reserved.