3

我正在处理SSRS报告。将图像类型数据转换为SQL Server中的XML /纯文本

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

我没有提供样本数据,因为有大量数据。 (整个报告内容保存到图像,以便我们可以理解)

建议我最好的解决方案。

回答

2

下面尝试和工作正常,但附加额外字符串这样输出。

二手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) 
+0

这是一个UTF-8 BOM。 'varchar'需要ASCII。 'nvarchar'可能稍好些,但我认为它预计会与UCS-2合作。 –

+0

那我该怎么办?你能帮我么?我尝试通过使用'NVARCHAR()',但仍然相同的输出。 – pedram

+1

没有简单的答案。您已存储UTF-8数据,但SQL Server不理解该编码。这可以通过a)更新存储这些数据的任何代码,以便不发布UTF-8 BOM(毕竟,这是可选的,而不是真正推荐的),然后b)更正现有数据以将其删除。 –

0

尝试如下,

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 

希望这有助于

+0

试过。没有提供适当的数据。图像到文本的输出是 - '???<?xml v' – pedram

0

您可以使用XML 如果你的表名是图片

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

将图像转换为base64字符串输出将是这样的

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

当当前数据库是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声明缺失。

相关问题