【问题标题】:SQL Server : files as binary text extractSQL Server:文件作为二进制文本提取
【发布时间】:2026-01-20 16:25:01
【问题描述】:

我有一个旧的 SQL Server 数据库,其中存储有数据类型为 text 的文件。

例如,.jpg 图像看起来像这样

89504E470D0A1A0A0000000D4948445200000A80000005F00806000000788B1B29000000017352474200AECE1CE90000000467414D410000B18F0BFC6105000000097048597300000EC300000.........

我猜这是二进制?

如何将这些提取到文件中?

我尝试了各种提取方法,但都失败了,我猜这是因为数据类型是文本而不是 blob 或 varbinary

【问题讨论】:

  • 这能回答你的问题吗? Convert a BINARY stored as VARCHAR to BINARY
  • 89504E470D0A1A0 .. 是 png 的标头十六进制签名。 select convert(varbinary(max), cast(cast('89504E470D0A1A0A00' as text) as varchar(max)), 2)
  • @SMor 我试过了,但得到错误“不允许从数据类型文本到二进制的显式转换。”我需要先将其转换为 varchar 吗?
  • @lptr 哈哈,你说得对,我只是假设它是 jpg,因为另一列的文件名中包含以 .jpg 结尾的文件名......并且您的查询与 SMor 上面写的页面上的信息相结合我能够解决它,谢谢你们:D

标签: sql-server type-conversion varbinary


【解决方案1】:

text 列转换为varchar(MAX) 并使用binary style 2 转换为varbinary(MAX)

SELECT CONVERT(varbinary(MAX), CAST(YourTextColumn AS varchar(MAX)), 2)
FROM dbo.YourTable;

【讨论】: