将SQL值连接到变量中。

27 浏览
0 Comments

将SQL值连接到变量中。

在SQL Server 2008上,我试图将所有选择的值的逗号分隔列表赋给一个变量。

SELECT field
FROM table

返回:

+-------+
| field |
+-------+
| foo   |
+-------+
| bar   |
+-------+

我想得到:

\"foo,bar,\"

我尝试了:

DECLARE @foo NVARCHAR(MAX)
SET @foo = ''
SELECT @foo = @foo + field + ','
FROM TABLE
PRINT @foo

它什么都没有返回。我做错了什么?

admin 更改状态以发布 2023年5月22日
0
0 Comments

如果表中有任何一个字段为空,那么就会发生这种情况。在SQL Server中,NULL + = NULL。要么省略它们,

SELECT @foo = @foo + field + ','
FROM TABLE
WHERE field is not null

要么绕过它们,

SELECT @foo = @foo + isnull(field + ',', '')
FROM TABLE

你可以写整个查询语句,省略常见的SET语句。下面的查询返回“foo,bar”,没有尾随逗号。

DECLARE @foo NVARCHAR(MAX)
SELECT @foo = isnull(@foo + ',', '') + field
FROM TABLE
WHERE field is not null
PRINT @foo

0
0 Comments

您需要更改NULL值

SELECT @foo = @foo + ISNULL(field + ',', '')
FROM TABLE

或者删除它们

SELECT @foo = @foo + field + ','
FROM TABLE
WHERE field IS NOT NULL

0