在列中将字符串与Int连接

时间:2018-06-21 17:48:18

标签: sql sql-server database sql-server-2012

我需要动态遍历列名并获取记录。

下面是我的表,并且我正在使用SQL Server 2017。

-- DECLARE @cnt INT = 1;

-- WHILE @cnt < 3
-- BEGIN
--     SELECT 'Name' + @cnt FROM Emp
--     SET @cnt = @cnt + 1;
-- END;
--GO

但是此查询无法正常工作。

如何遍历诸如Name+@cnt之类的列?

预期输出:

User1
User2
User3

Emp表:

enter image description here

2 个答案:

答案 0 :(得分:0)

   arow     bread  fruit tea   water category perc
1  row2     b      b     a     c     drink    0.5

答案 1 :(得分:0)

动态SQL最适合此任务:

declare @sql varchar(1000) = '';
select @sql = @sql + ' select ' + name + ' from MYDATABASE.dbo.Emp ' from MYDATABASE.sys.columns
where name like 'Name[1-3]'

exec(@sql)

查询将搜索Name1Name2Name3之类的列名,并构造三个SELECT查询,然后由EXEC函数执行

注意::我假设该表位于dbo模式中,因此您需要使用数据库而不是MYDATABASE