多语言展示
当前在线:191今日阅读:26今日分享:39

sql server 动态SQL:动态查询表中的列数据

使用场景:根据指定列名,或者其他表中存储的列名,从某一个表中查询该列名的数据思路:由于列名不固定,不能直接对表查询结果,此时,可以使用动态SQL
工具/原料

sql server

方法/步骤
1

创建模拟数据源表

3

定义变量,模拟需要动态获取的列名

4

执行动态SQL查询:表#table1的@colname列,同时满足code=@code的结果

5

查询效果如下:

6

完整模拟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有效,其他类型数据库可能需要调整某些内容

推荐信息