我们在 SQL Server 中有一个 TestPartner 数据库。缺陷的描述存储在 "image" 数据类型列中。我们需要编写一个查询来将数据显示为 HTML 表格。我们有这个查询,它从相应的表中读取数据,使用
查询:
For XML
将信息显示为 xml。但是将图像数据类型转换为 varchar 会引发异常:“FOR XML 无法序列化节点 'TD' 中包含不允许在 XML 中的字符(0x0002)的数据。要使用 FOR XML 检索此数据,请将其转换为二进制、varbinary 或图像数据类型,并使用 BINARY BASE64 指令。”查询:
DECLARE @ResultsTable nvarchar(MAX)
--Create the XML table with the query results
SET @ResultsTable =
N'<H3>QA Automation Tests Results Summary </H3>' +
N'<table border="1">' +
N'<tr><th>Test Name</th><th>Execution Date</th>' +
N'<th>Check Name</th><th>Description</th></tr>' +
CAST ( (
select distinct Name as TD, '',
(Select CAST(CONVERT(nchar(100),CAST( TPCommandDetail AS BINARY(100) )) as VARCHAR(100)) ) as TD, ''
FROM TestPartnerDB.TP_RESULTS_RECORDS
FOR XML PATH('tr'), TYPE
) AS nvarchar(max) ) + N'</table>'
SELECT @ResultsTable
令人惊讶的是,它对一些记录有效,但是当您将大小增加到200时,它又会再次出错。我还尝试过:
Select CONVERT(varchar(1000), convert(varbinary(1000), tpcommanddetail)) From TestPartnerDB.TP_RESULTS_RECORDS
这会返回每一行奇怪的字符。有人知道如何让这个东西正常工作吗?