我正在从SQL Server 2005中的表中提取电子邮件地址记录,并希望构建一个用作@recipients
列表的字符串sp_send_dbmail
.该表有一个名为EmailAddress的字段,表中有10条记录.
我这样做:
DECLARE @email VARCHAR(MAX) SELECT @email = ISNULL(@email + '; ', '') + EmailAddress FROM accounts
现在@email有一个半分隔的10个电子邮件地址列表,来自accounts表.
我的问题是为什么/如何运作?为什么@email只有表中的最后一个电子邮件地址?
因为对于每一行,您将当前值@email
与下一个结果相连接EmailAddress
.字符串连接就像调用函数一样,因为它必须按顺序计算每一行的结果.