日期:2014-05-18  浏览次数:20465 次

请教Like的一种用法?
数据库中有一个基础表   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);这个语句是错误的  
请教各位有没有好的方法呢?

------解决方案--------------------
没看明白什么意思~~~
------解决方案--------------------
mark
------解决方案--------------------
不清楚

------解决方案--------------------
select sss from table2,baseTable where charindex(name,sss) = 1

------解决方案--------------------
name 中所有行如果都有% 可以
select sss from table2 where sss like '%\%% 'escape '\ '
------解决方案--------------------
利用动态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)