我试图做一个简单的连接但在某个地方失败了!我想仅在其他两个变量不为空时才在电子邮件中显示注释。即使一个变量包含数据,它也应该显示Note。以下是我的代码。
SET @Note = CASE
WHEN @tableHTML_AssignedTo IS NOT NULL OR @tableHTML_SubmittedBy IS NOT NULL
THEN 'Note: The tickets with the following statuses are not listed in this alert: Closed,Rejected'
ELSE NULL
END
SET @ComposeBody = ISNULL(@tableHTML_AssignedTo, '') +
ISNULL(@tableHTML_SubmittedBy, '') +
ISNULL(@Note, '')
我知道这是一个简单的代码,但在我看来,我做错了什么并不明显。但是使用我的代码,如果两个表都是空的,则会发送一封空电子邮件。如果我删除了Notes,则不会发送电子邮件,但我想在电子邮件中添加Notes
注意:我在游标中执行此代码以递归方式发送电子邮件
答案 0 :(得分:2)
我会这样做 - 看起来更简单。
这里的技巧是了解null如何与concat一起工作。任何以null结尾的内容都为null。因此,如果Assigned或submit为null,则COALESCE的第一个参数将为null。每个下一步都会检查另外两个案例。
SET @Note = 'Note: The tickets with the following statuses are not listed in this alert: Closed,Rejected';
SET @ComposeBody = COALESCE(
@tableHTML_AssignedTo+@tableHTML_SubmittedBy+@Note, -- Selected if both non null
@tableHTML_AssignedTo+@Note, -- Selected if SubmittedBy null
@tableHTML_SubmittedBy+@Note) -- Selected if AssignedTo null
-- Both are null, set body to null.