sql - 将十六进制 varchar 插入图像列
问题描述
我正在开展一个项目,将数据从客户移动到另一个客户。由于多种安全策略,我们可以实现此目的的唯一方法是将数据导出到 csv 并由其他客户端导入 csv。
然后我运行一个合并脚本将所有数据放入各自的列和表中。除图像值外,一切正常。
提取图像值的唯一方法是将其转换为 varchar(max),然后再次将其导入为 varchar(max)。然而,数据始终保持正确的格式,但是当我将其导入图像列时,它会转换为错误的格式。
我尝试了多次转换和强制转换,但没有任何效果。无论如何我可以避免列进行额外的转换,因为变量已经是正确的格式?
值应该如何:(只是一小部分,因为它是一个极长的字符串)FFD8FFE000 列如何转换它:0x464644384646
看起来字符串从十六进制转换为十进制。
解决方案
因为您没有告诉 SQL Server 如何转换它。'FFD8FFE000'
因为你没有让 SQL Server 知道它是一个预先格式化的字符串varbinary
。 0x46464438464645303030
相反,提供一个样式代码让 SQL Server 知道它已经格式化为二进制文件:
SELECT CONVERT(varbinary(max),'FFD8FFE000',2);
这返回0xFFD8FFE000
。
请注意,我varbinary(MAX)
也使用。自2005 年(即16image
年前)以来已被弃用;你已经很久没有使用它了。
推荐阅读
- java - android.view.InflateException: Binary XML file line #6: Error inflating class com.google.android.gms.maps.MapView
- javascript - Show div using onclick on an a tag
- python - Kill Python thread running a web server
- kubernetes - 如何修复:数字海洋上 nginx-ingress 的空 IP 地址
- ffmpeg - 将原始数据复制到 MP4 的 ffmpeg 命令挂起并且永远不会完成
- javascript - Messenger Postback 按钮根本不起作用
- python-3.x - nn.NLLLoss() 目标大小问题
- django - 覆盖模型保存方法不允许赋值
- android - NativeScript 和 Angular 代码共享 + 延迟加载的模块路径
- java - MustacheException:第 15 行没有名称为“Id”的方法或字段。Whitelabel 错误页面