【问题标题】:Multiple Search Criteria Single Field in T-SQLT-SQL 中的多个搜索条件单个字段
【发布时间】:2011-11-18 15:54:29
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    如果您将搜索词放在一个表格中,这并不难。

    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
    

    【讨论】:

    • 我可以不使用包含我想要的结果的视图并将标准表加入到该视图中,还是会慢得多?
    • @Wade73 您无法创建包含结果的视图。除非您在创建视图之前知道所有条件,否则不会这样做,否则会破坏此分配的目的。
    • 那么搜索表中的所有字段都是我要搜索的字段,为什么我不能在视图(或表)中搜索相同的字段,而不是将其插入临时表中?
    • @Wade73 那是可能的。我以为你的意思是你希望我写的搜索和你提到的视图包含在同一个视图中,这是不可能的。
    猜你喜欢
    • 1970-01-01
    • 2017-03-04
    • 2020-09-11
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    • 2020-03-10
    • 2011-09-14
    • 1970-01-01
    相关资源
    最近更新 更多