在 SQL 服务器中将图像类型数据转换为 XML/Plain 文本

Convert Image Type Data to XML/Plain Text in SQL Server

我正在处理 SSRS 报告。

我有数据类型为 Image 的内容。我想将其转换为 plain-textXML。可能吗?

我没有提供示例数据,因为数据量很大。 (整个报告内容保存为图片方便大家理解)

给我建议最好的解决方案。

尝试如下,

CREATE TABLE #a (id IMAGE )

INSERT INTO #a VALUES('imagedata' )

SELECT CONVERT(IMAGE ,CONVERT(VARCHAR(MAX) ,CONVERT(VARBINARY(MAX) ,ID))) AS  'TEXT TO IMAGE' FROM   #a

SELECT CONVERT(VARCHAR(10),CONVERT(VARCHAR(MAX) ,CONVERT(VARBINARY(MAX) ,ID))) ' IMAGE TO TEXT ' FROM   #a

DROP TABLE #a

希望对您有所帮助

在下面进行了尝试并且工作正常但是附加了像这样的额外字符串  到输出。

使用 RIGHT() 删除前 3 个字符 - 工作正常

SELECT 
RIGHT(CONVERT(VARCHAR(MAX),CONVERT(VARCHAR(MAX),CONVERT(VARBINARY(MAX) ,ImageDataField))),
LEN(CONVERT(VARCHAR(MAX),CONVERT(VARCHAR(MAX),CONVERT(VARBINARY(MAX) ,ImageDataField))))-3)

您可以使用 XML 将图像转换为 base64 字符串 如果您的 table 名字是 Images

select * from Images FOR XML PATH('Images')

输出会是这样

<Images>
  <ImageID>2</ImageID>
  <Img>/9j/4TfsRXhpZgAATU0AKgAAAAgACgEPAAIAAAAGAAAAhgEQAAIAAAAKAAAAjAESAAMAAAABAAEAAA</Img>
</Images>

当当前数据库是 ReportServer 数据库时,这在 SQL Server Management Studio 中有效。

-- given a NonRemitted_detail.rdl file that was deployed to a report server on path /Jacket Generator 
-- the contents can be found as XML with this:
SELECT CONVERT(XML, CONVERT(VARBINARY(MAX), Content)) AS rdl_file_content
    FROM ReportServer.dbo.[Catalog]
    WHERE [Path] = N'/Jacket Generator/NonRemitted_detail'

几乎相同。 XML 元素之间的空格已被删除。开头 XML 声明丢失。