有个问题请教高手们:
比如 表a中某个字段放的是表名称(a1,a2,a3,a4....),(a1,a2,a3,a4....)这几个表是实际存在的,现在的问题是想查询(a1,a2,a3,a4....)这里面的数据,请高手帮我解决一下,谢谢

解决方案 »

  1.   

    SELECT 'EXEC(''SELECT * FROM '+COLNAME+')' FROM TB
      

  2.   


    declare @Tb varchar(50),@sqltext
    select @Tb = isnull(@Tb,'')+' select * from '+ 某字段 from 表a
    exec(@Tb)
      

  3.   

    先分拆列值SELECT TOP 8000 id = IDENTITY(int, 1, 1) INTO #b FROM syscolumns a, syscolumns b  SELECT A.id, 
    SUBSTRING(A.col, B.id, CHARINDEX(',', A.col + ',', B.id) - B.id) 
    into #a
    FROM a A, #b B
    WHERE SUBSTRING(',' + A.col, B.id, 1) = ','
    /*
    id col
    1   a1
    2   a2 
    3   a3
    4   a4
    */
    然后动态拼接 
      

  4.   

    declare @tb varchar(10)
    declare @sql varchar(1000)
    set @sql=''
    select @tb=col from #a
    set @sql='select * from'+ @tb
    exec(@sql)
      

  5.   

    --写错了一些地方,更正一下
    declare sqltext varchar(8000)
    select @sqltext= isnull(@sqltext,'')+' select * from '+ 某字段 from 表a--取出字段的值,拼凑出SQL语句
    print ) @sqltext --查看拼凑的语句
    exec(@Tb)--使用exec执行该拼凑的语句
      

  6.   


    declare @tableName varchar(10)
    declare @sqlStr varchar(1000)
    while exists (select 1 from 表a)
    begin
      select @tableName=列 from 表a
      set @sqlStr='select * from'+ @tableName
      exec(@sql)
    end