更新表插入 VARBINARY 数据 [英] Update table inserting VARBINARY data

查看:30
本文介绍了更新表插入 VARBINARY 数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我运行 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:

  • charvarchar 数据(例如 ASCII、ISO-8859-1)变成二进制字节.对于单字符编码,这意味着每个字符一个字节.
  • ncharnvarchar 数据(即 UTF-16)每个变成两个字节,采用 big-endian 格式,所以 N'ABC'变成 0x410042004300
  • char or varchar data (e.g. ASCII, ISO-8859-1) become binary bytes. For single character encodings this means one byte per character.
  • nchar or nvarchar data (i.e. UTF-16) become two bytes each, in big-endian format, so N'ABC' becomes 0x410042004300

用于将十六进制转换为格式 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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆