数据库中有一个基础表 baseTable,列如下: 
name 
1% 
2% 要写一个sql语句按照name条件查询另外一个表 
现在是这样写的 
select sss from table2 where sss like 1% or 2%; 
但是baseTable中的name是随时变化的,那有没有一种方法可以象如下语句那样,不管name增加或减少都不用改SQL语句: 
select sss from table2 where sss like in (select name from baseTable);这个语句是错误的 
请教各位有没有好的方法呢?

解决方案 »

  1.   

    select sss from table2,baseTable where charindex(name,sss) = 1 
      

  2.   

    意思是
    select sss from table2 where sss like 1% or sss like 2%;
    用另外一种方法代替,筛选条件1%是从基础表取得
      

  3.   

    name 中所有行如果都有% 可以
    select sss from table2 where sss like'%\%%'escape'\'
      

  4.   

    利用动态sql:
    declare @sql varchar(2000)
    declare @count int
    declare @sign varchar(20)
    declare @i int
    select identity(int,1,1) id,name into #tmp from basetable
    set @sql='select sss from table2 where sss like '
    select @count=count(name) from #tmp
    set @i=1
    while(@i<@count+1)
     begin
     select @sign=name from #tmp where id=@i 
     set @sql=@sql+@sign+'or sss like '
     set @i=@i+1
    end
    set @sql=substring(@sql,1,len(@sql)-12)
    exec(@sql)