T-SQL中的多个搜索条件单个字段

时间:2011-09-16 12:20:28

标签: asp.net sql-server-2005 tsql

我遇到一个问题,我需要为SQL中的单个字段传递多个条件。例如,如果我正在寻找包含Ruby,PHP或ASP.Net的所有书籍。另外,我只想返回有限数量的行进行分页。我知道我可以做动态sql,但我相信可能有更好的方法。任何帮助表示赞赏。

1 个答案:

答案 0 :(得分:2)

如果您将搜索词放在表格中,那就不那么难了。

declare @criteria table(text1 varchar(20)) 
declare @searchtable table(longertext varchar(2000)) 

--lines wanted  
declare @linefrom int
declare @lineto int 

set @linefrom = 1
set @lineto = 2

insert @criteria values('asp.') 
insert @criteria values('ruby') 

insert @searchtable values('bla bla ruby') 
insert @searchtable values('bla asp. bla') 
insert @searchtable values('ruby asp. bla') 

;with a as ( 
select s.longertext, rn = row_number() over(order by longertext) from @searchtable s join @criteria c 
on s.longertext like '%'+ c.text1+'%' 
group by s.longertext 
) 
select longertext from a 
where rn between @linefrom and @lineto

结果:

bla asp. bla
bla bla ruby