-1

我正在尝试创建两个电子邮件地址列表,一个是当前登录到数据库的所有用户的列表,另一个是未登录的用户的列表。

我似乎无法填充 @usersin 和 @usersout 变量,我从最后两个 SELECT 中得到一个 NULL 输出......谁能看看我下面的代码并告诉我它有什么问题?

SELECT @maxurn = MAX(ID) FROM ##tmp2
SET @urn = 1
WHILE @urn <= @maxurn

BEGIN

SET @usersin = @usersin + (SELECT [USER_NAME] + ';' FROM ##tmp2 WHERE [LoggedIn]='YES' 
AND ID = @urn FOR XML PATH('')) 

SELECT @urn = @urn + 1
END

SET @urn = 1
WHILE @urn <= @maxurn

BEGIN

SET @usersout = @usersout + (SELECT [USER_NAME] + ';' FROM ##tmp2 WHERE [LoggedIn]='NO'
AND ID = @urn FOR XML PATH('')) 

SELECT @urn = @urn + 1
END

SELECT @usersin
SELECT @usersout
4

1 回答 1

1

这似乎是设计使然。如果将 NULL 与某个值连接,则结果为 NULL :

SQL Server 字符串连接与 Null

因此您尝试设置 @usersin 和 @usersout 失败,因为它们一开始就为 NULL。要么直接分配给它(不连接),要么给它一个初始值(例如空字符串)。

于 2013-07-30T12:18:12.393 回答