首页 > 解决方案 > 将十六进制 varchar 插入图像列

问题描述

我正在开展一个项目,将数据从客户移动到另一个客户。由于多种安全策略,我们可以实现此目的的唯一方法是将数据导出到 csv 并由其他客户端导入 csv。

然后我运行一个合并脚本将所有数据放入各自的列和表中。除图像值外,一切正常。

提取图像值的唯一方法是将其转换为 varchar(max),然后再次将其导入为 varchar(max)。然而,数据始终保持正确的格式,但是当我将其导入图像列时,它会转换为错误的格式。

我尝试了多次转换和强制转换,但没有任何效果。无论如何我可以避免列进行额外的转换,因为变量已经是正确的格式?

值应该如何:(只是一小部分,因为它是一个极长的字符串)FFD8FFE000 列如何转换它:0x464644384646

看起来字符串从十六进制转换为十进制。

标签: sqlsql-server

解决方案


因为您没有告诉 SQL Server 如何转换它。'FFD8FFE000'因为你没有让 SQL Server 知道它是一个预先格式化的字符串varbinary 0x46464438464645303030相反,提供一个样式代码让 SQL Server 知道它已经格式化为二进制文件:

SELECT CONVERT(varbinary(max),'FFD8FFE000',2);

这返回0xFFD8FFE000

请注意,我varbinary(MAX)也使用。自2005 年(即16image年前)以来已被弃用;你已经很久没有使用它了。


推荐阅读