更新表插入 VARBINARY 数据

发布于 2024-12-29 02:09:56 字数 456 浏览 0 评论 0原文

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

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

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

'00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF...FFF'

如何完成这个查询?

查询看起来像:

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

When I run the sql query I got something like this :

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'

How to done this query?

Query looks like :

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

快乐很简单 2025-01-05 02:09:56

从 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,请在此处查看我的答案,了解将转换文本的 UDF转为 UTF-8:

From SQL Server 2005 onwards CONVERT does what you want:

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

The styles for converting to/from binary are:

  • 0: Raw data, ascii codepoints become binary bytes, UTF-16 codepoints become two bytes each.
  • 1: Hex format, prefixed with '0x'
  • 2: Hex format, not prefixed with '0x'

For converting characters to binary in format 0:

  • 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

For converting hex to binary in formats 1 and 2:

  • Each two input hex digits become one byte
  • If input is not valid hex an error occurs
  • Whitespace and punctuation are not allowed

See MSDN:

If you need UTF-8, please see my answer here for a UDF that will convert text to UTF-8:

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文