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聲明缺失。

相關問題