【发布时间】:2011-11-18 15:54:29
【问题描述】:
我有一个问题,我需要为 SQL 中的单个字段传递多个条件。例如,如果我要查找所有包含 Ruby、PHP 或 ASP.Net 的书名。另外,我只想返回有限数量的行进行分页。我知道我可以做动态 sql,但我相信可能有更好的方法。任何帮助表示赞赏。
【问题讨论】:
标签: asp.net sql-server-2005 tsql
我有一个问题,我需要为 SQL 中的单个字段传递多个条件。例如,如果我要查找所有包含 Ruby、PHP 或 ASP.Net 的书名。另外,我只想返回有限数量的行进行分页。我知道我可以做动态 sql,但我相信可能有更好的方法。任何帮助表示赞赏。
【问题讨论】:
标签: asp.net sql-server-2005 tsql
如果您将搜索词放在一个表格中,这并不难。
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
【讨论】: