2011-09-16 78 views
0

我有一個問題,我需要在SQL中爲單個字段傳遞多個條件。例如,如果我正在尋找所有包含Ruby,PHP或ASP.Net的書名。此外,我只想返回有限數量的行進行分頁。我知道我可以做動態SQL,但我相信可能有更好的方法。任何幫助表示讚賞。多個搜索標準T-SQL中的單個字段

回答

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 
+0

我能不能使用與我想要的結果的圖,並加入標準表到還是會很慢? – Wade73

+0

@ Wade73您無法制作包含結果的視圖。除非你在創建視圖之前知道所有的標準,否則這將違背這項任務的目的。 –

+0

那麼所有的搜索表都是我想要搜索的字段,爲什麼我不能在視圖(或表)中搜索相同的字段,而不是將其插入臨時表中? – Wade73