2011-09-16 20 views
0

SQLの1つのフィールドに複数の条件を渡す必要があるという問題があります。たとえば、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