【发布时间】:2015-05-19 09:52:08
【问题描述】:
我正在我的测试环境和我的生产环境之间进行此检查。 我正在使用一个表格并通过电子邮件将该表格发送给我自己,其中包含测试或产品中缺少的数据(不匹配的数据)。
SET @tableHTML NVARCHAR(MAX);
SET @tableHTML = N'<H3> Rows </H3>'+
N'<table border = "1">'+
N'<tr><th>ID</th>'+
N'<th>Company</th>'+
N'<th>Text</th>'+
N'<th>Land</th>'+
CAST ((SELECT td=ID,'',
td = Company, '',
td = [Text],'',
td = Land, ''
FROM (SELECT ID, Company, [Text], Land
FROM (SELECT * FROM [dbo].[Test]
UNION ALL
SELECT * FROM [dbo].[Prod]) data
GROUP BY
ID, Company, [Text], Land
HAVING COUNT(*)!=2) T
for XML Path ('tr'), TYPE) as NVARCHAR(MAX))+
N'</table>';
EXEC msdb.dbo.sp_send_dbmail
@recipients = 'My Email;',
@body = @tableHTML,
@body_format = 'HTML';
问题:
所以问题是我得到了这个程序,它给我发了一封电子邮件。但是假设数据库中的文本字段为空。它不会在表中为空,它将被找到的下一个值替换为 Land 值。
Any1 知道如何解决这个问题吗?我希望表中的文本值为 ''(空字符串)或 NULL,而不是替换为 Land 的值。而且地价会丢失。
编辑: XML 输出看起来不错,但是在将其解析为 Html 表时出现问题。从上到下为空的所有列都将被下一列替换为任何行上的值。
【问题讨论】:
-
您使用的是哪个 SQL Server 版本?答案会因 SQL Server 版本而异。
-
我正在使用版本为 11.0.5058.0 的 Sql Server 2012
标签: sql tsql stored-procedures sql-server-2012