如何将列中的所有行放入变量?

How to put all rows in a column to a variable?

我写了一个存储过程

Declare @Split table
(
 Jurisdiction nvarchar(max)
)

Insert into @Split select Jurisdiction from tbLicence where AgentId =@AgentId;

Select * from @Split;

Declare @products varchar(MAX);

Select @products = Jurisdiction from @Split;

Select @products;

我想将@Split 列的所有值放入@products 变量中。 请注意,上面的代码仅将最后一行的列值放入@products。 请帮帮我!!!

首先用empty string初始化变量。然后使用任何定界符附加所有行。使用这个。

DECLARE @products VARCHAR(MAX)='';

SELECT @products += Isnull(Jurisdiction, '') + ','
FROM   @Split;

SELECT left(@products,len(@products)-1); 

或使用For XML path()

set @products=(select ','+Jurisdiction from @Split for xml path(''))

select right(@products,len(@products)-1)

这可能对你有帮助

Declare @Split table( Jurisdiction nvarchar(max))
Declare @products varchar(MAX)=''
declare @count int=(select count(*) from @split)
declare @a int=1

Insert into @Split values ('a'),('b')


while(@a<@count)
begin
    Select @products += Jurisdiction from @Split 
    set @a=@a+1

end

select @products

@Nida...您也可以使用 xml 路径...,但它会将所有值与逗号分隔符连接起来。我已经完成 xml 路径...可能会对您有所帮助...

dbo.columnnames中的样本值

Value One
Value Two
Value Three
Value Four
Value Five

查询

declare @lv_table table( column_values varchar(100))
declare @product_v varchar(max)
insert into @lv_table
select * from dbo.columnnames
set  @product_v =(

select 
    Stuff(
        (
    SELECT  ',' + column_values 
    FROM  @lv_table
    FOR XML PATH('')
    ), 1, 1, '') )

    select @product_v

输出

Value One,Value Two,Value Three,Value Four,Value Five