我确信这是在某处讨论的,但在搜索了一段时间之后我找不到它。
我正在构建SQL 2000的存储过程,我需要构建一个可以在IN函数中使用的数字列表。
查询看起来像这样
SELECT DISTINCT type FROM dbo.table WHERE building = @currentBuilding
这通常会在1-5个结果之间返回,我正在寻找一种方法将它放入nvarchar或其他东西。
我想梦想有一个简单的方法可以做到这一点,因为它在一列中,但我有一种感觉,我将最终迭代结果。
作为一方,nvarchar是否使用正确的变量?有没有更好的方法来存储这些会使IN更快地工作?
谢谢!
答案 0 :(得分:1)
尝试类似:
declare @All nvarchar(1000)
SET @All=null
SELECT
@All=ISNULL(@All+', ','')+CONVERT(varchar(10),d.value)
FROM (SELECT 1 AS Value UNION SELECT 22 UNION SELECT 333 UNION SELECT 4444) d
PRINT @All
输出:
1, 22, 333, 4444
这是你可以使用的:
SELECT
@All=ISNULL(@All+', ','')+CONVERT(varchar(10),d.type)
FROM (SELECT DISTINCT type
FROM dbo.table
WHERE building = @currentBuilding
) d