sql server
创建模拟数据源表
定义变量,模拟需要动态获取的列名
执行动态SQL查询:表#table1的@colname列,同时满足code=@code的结果
查询效果如下:
完整模拟SQL如下: -- 1、创建模拟数据源表 IF OBJECT_ID('tempdb..#table1') IS NOT NULL DROP TABLE #table1; create table #table1( code varchar(100), col1 varchar(100), col2 varchar(100), col3 varchar(100) ); -- 2、插入模拟数据 insert into #table1(code, col1, col2, col3) values('row1', 'col1-1', 'col2-1', 'col3-1'); insert into #table1(code, col1, col2, col3) values('row2', 'col1-2', 'col2-2', 'col3-2'); insert into #table1(code, col1, col2, col3) values('row3', 'col1-3', 'col2-3', 'col3-3'); -- 3、定义变量,模拟需要动态获取的列名 declare @colname varchar(100) = 'col2'; -- 4、动态SQL查询:表#table1的@colname列,同时满足code=@code的结果 declare @sql varchar(max); declare @code varchar(100) = 'row2'; set @sql = 'select ''' + @colname + ''' as [name], ' + @colname + ' as [value] from #table1 where code = ''' + @code + ''' '; exec(@sql);
上述动态查询对sql server有效,其他类型数据库可能需要调整某些内容