我需要动态遍历列名并获取记录。
下面是我的表,并且我正在使用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
表:
答案 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)
查询将搜索Name1
,Name2
,Name3
之类的列名,并构造三个SELECT
查询,然后由EXEC
函数执行
注意::我假设该表位于dbo
模式中,因此您需要使用数据库而不是MYDATABASE
。