Tsql 如何从带有变量的表中选择带括号的列

Tsql 如何从带有变量的表中选择带括号的列,tsql,while-loop,delimiter,Tsql,While Loop,Delimiter,我有一个简单的表,它有以下列。我想创建一个WHILE循环,它将像这样返回每一列。我该怎么做 create table #bracket_example (row_num int identity(0,1), [0] int, [1] int, [2] int, [3] int) insert #bracket_example values (25,35,45,55) insert #bracket_example values (32,53,98,67) insert #bracket_exam

我有一个简单的表,它有以下列。我想创建一个WHILE循环,它将像这样返回每一列。我该怎么做

create table #bracket_example (row_num int identity(0,1), [0] int, [1] int, [2] int, [3] int)
insert #bracket_example values (25,35,45,55)
insert #bracket_example values (32,53,98,67)
insert #bracket_example values (33,44,55,66)
insert #bracket_example values (11,14,15,16)
declare @j int
set @j = 0

while @j < 4
begin
select '[' + cast(@j as varchar(2)) + ']' from #bracket_example
set @j = @j + 1
end

因此,它不是列出值,而是列出列名。我如何才能让它改为列出值?

如果我理解正确,您需要使用DynamicSql。请试试这个:

while @j < 4
begin
EXEC sp_executesql 'select [' + cast(@j as varchar(2)) + '] from #bracket_example'
set @j = @j + 1
end

如果我理解正确,您需要使用DynamicSql。请试试这个:

while @j < 4
begin
EXEC sp_executesql 'select [' + cast(@j as varchar(2)) + '] from #bracket_example'
set @j = @j + 1
end
试试这个:

create table #bracket_example (row_num int identity(0,1), [0] int, [1] int, [2] int, [3] int)

insert #bracket_example values (25,35,45,55)
insert #bracket_example values (32,53,98,67)
insert #bracket_example values (33,44,55,66)
insert #bracket_example values (11,14,15,16)

declare @j int
declare @DynSQL varchar(50)
set @j = 0

while @j < 4
begin

set @DynSQL = 'select [' + cast(@j as varchar(2)) + '] as Column_' + cast(@j as varchar(10)) + ' from #bracket_example'

EXEC (@DynSQL)

set @j = @j + 1
end
试试这个:

create table #bracket_example (row_num int identity(0,1), [0] int, [1] int, [2] int, [3] int)

insert #bracket_example values (25,35,45,55)
insert #bracket_example values (32,53,98,67)
insert #bracket_example values (33,44,55,66)
insert #bracket_example values (11,14,15,16)

declare @j int
declare @DynSQL varchar(50)
set @j = 0

while @j < 4
begin

set @DynSQL = 'select [' + cast(@j as varchar(2)) + '] as Column_' + cast(@j as varchar(10)) + ' from #bracket_example'

EXEC (@DynSQL)

set @j = @j + 1
end

在你的问题中加入预期的结果总是好的。你的问题不是很清楚。你想从你的循环中得到什么?在你的问题中加入预期的结果总是好的。你的问题不是很清楚。你们想从循环中得到什么?谢谢你们的解决方案。事实证明,我需要一个WHERE语句来过滤掉括号_示例中的一些数据,所以我将对本节进行硬编码。我已经知道我需要的确切行了。谢谢你们的解决方案。事实证明,我需要一个WHERE语句来过滤掉括号_示例中的一些数据,所以我将对本节进行硬编码。我已经知道我需要的确切行数。