从Select语句为变量设置多个值

时间:2016-02-08 18:49:16

标签: sql sql-server tsql subquery

我正在尝试像这样设置varchar变量:

DECLARE @var NVARCHAR(40)
set     @var = (SELECT name from Tmptable AS name )

我想要这样的变量存储值:'name1,name2,name3,...' 这将返回一个错误,如标题中的错误:子查询返回的值超过1。

我在函数

的参数中使用此变量
Select *
Into Tmp2
FROM [dbo].[MyFunction](@var, DEFAULT)  AS PARAM
.....

我知道我们不能在变量中添加超过值。我需要通过拆分值将变量表示多于一个值“,”

在这方面的任何方面

1 个答案:

答案 0 :(得分:1)

您可以使用STUFFFOR XML

执行此操作
DECLARE @var NVARCHAR(40)
Set     @var = 
(
    SELECT  Distinct Stuff((Select ',' + Name From Tmptable For Xml Path ('')), 1, 1, '') 
    From    Tmptable
)

但是,理想情况下,您不应该在VARCHAR中存储逗号分隔值。使用表变量可能会更好:

Declare @Var Table
(
    Name    NVarchar (40)
)

Insert  @Var (Name)
Select  Name
From    TmpTable