我正在尝试像这样设置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
.....
我知道我们不能在变量中添加超过值。我需要通过拆分值将变量表示多于一个值“,”
在这方面的任何方面
答案 0 :(得分:1)
您可以使用STUFF
和FOR 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