数据库中有一个基础表 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);这个语句是错误的
请教各位有没有好的方法呢?
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);这个语句是错误的
请教各位有没有好的方法呢?
select sss from table2 where sss like 1% or sss like 2%;
用另外一种方法代替,筛选条件1%是从基础表取得
select sss from table2 where sss like'%\%%'escape'\'
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)