在 SQL 服务器中将图像类型数据转换为 XML/Plain 文本
Convert Image Type Data to XML/Plain Text in SQL Server
我正在处理 SSRS
报告。
我有数据类型为 Image
的内容。我想将其转换为 plain-text
或 XML
。可能吗?
我没有提供示例数据,因为数据量很大。 (整个报告内容保存为图片方便大家理解)
给我建议最好的解决方案。
尝试如下,
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 声明丢失。
我正在处理 SSRS
报告。
我有数据类型为 Image
的内容。我想将其转换为 plain-text
或 XML
。可能吗?
我没有提供示例数据,因为数据量很大。 (整个报告内容保存为图片方便大家理解)
给我建议最好的解决方案。
尝试如下,
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 声明丢失。