SQL Server 更新 表 插入 VARBINARY 数据

rqdpfwrv  于 2022-11-21  发布在  其他
关注(0)|答案(1)|浏览(264)

当我运行sql查询时,我得到了如下所示的结果:
不允许从数据类型varchar到数据类型varbinary的隐式转换....请使用CONVERT函数运行此查询。(严重程度16)"'
要插入的数据如下所示

'00001200000000000010000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF...FFF'

如何完成此查询?
查询如下所示:

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

wfveoks01#

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

  • 计算 UTF8 字符 串 的 MD5 哈希

相关问题