就是来自查询的结果,储存在数据库一个列中的文本。
SELECT * FROM TABLE1 +(select col2 from TABLE2)其中select col2 from TABLE2 的结果是where col1 =xx
怎么转换才能得到
SELECT * FROM TABLE1 where col1 =xx

解决方案 »

  1.   

    假设你的table2表上有一列自增列ID
    declare @var varchar(8000),@id int,@cnt int
    select @cnt=count(1) from table2
    set @id=1
    while @cnt>0
    begin
    select @var=col2 from table2 where id=@id
    if @var is not null
    begin
    exec('select * from table1 '+@var)
    set @cnt=@cnt-1
    end
    set @id=@id+1
    end
      

  2.   

    很简单,如果select col2 from TABLE2,会得到结果‘where col1 =xx’,这是原来储存where...这样的条件语句的,我要把这些条件语句作为一个新的查询的条件,要成为
    SELECT * FROM TABLE1 +(select col2 from TABLE2)
    得到
    SELECT * FROM TABLE1 where col1 =xx
    怎么才能转换?
      

  3.   

    楼上的理解是对的,我也知道exec可以连起执行外来语句,但是我的视图语句比较多,其中一句涉及外来文本语句,如果这样就要整个视图所有语句视为外来语句了,这样对代码来说好像不利于编辑,有什么更好的解决办法吗?