sql在字符串中搜索多个单词

use*_*218 16 sql

什么是最有效和优雅的SQL查询,查找包含单词"David","Moses"和"Robi"的字符串.假设该表名为T且列为C.

Pra*_*ana 27

Select * from table where 
  columnname like'%David%' and 
  columnname like '%Moses%' and columnname like'%Robi%' 
Run Code Online (Sandbox Code Playgroud)

  • 如果您关心术语的顺序,您可以考虑使用类似“select * from T where C like'%David%Moses%Robi%”这样的语法 (2认同)

Nei*_*ght 20

在启用了全文索引的SQL Server 2005+中,我将执行以下操作:

SELECT *
  FROM T
 WHERE CONTAINS(C, '"David" OR "Robi" OR "Moses"');
Run Code Online (Sandbox Code Playgroud)

如果您希望搜索结果以大卫,罗比或摩西作为前缀,您可以执行以下操作:

SELECT *
  FROM T
 WHERE CONTAINS(C, '"David*" OR "Robi*" OR "Moses*"');
Run Code Online (Sandbox Code Playgroud)

  • 我理解这个问题的方式,你想要`AND而不是`OR`s - 这也意味着多个前缀没有意义,但感谢你添加这些信息. (2认同)

KIR*_*KIR 8

如果您关心术语的顺序,您可以考虑使用类似的语法

select * from T where C like'%David%Moses%Robi%'
Run Code Online (Sandbox Code Playgroud)


use*_*006 6

这是我用来在多列中搜索多个单词的方法 - SQL Server

希望我的回答对某人有帮助:) 谢谢

declare @searchTrm varchar(MAX)='one two three ddd 20   30 comment'; 
--select value from STRING_SPLIT(@searchTrm, ' ') where trim(value)<>''
select * from Bols 
WHERE EXISTS (SELECT value  
    FROM STRING_SPLIT(@searchTrm, ' ')  
    WHERE 
        trim(value)<>''
        and(    
        BolNumber like '%'+ value+'%'
        or UserComment like '%'+ value+'%'
        or RequesterId like '%'+ value+'%' )
        )
Run Code Online (Sandbox Code Playgroud)