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

时间:2011-06-28 12:31:33

标签: sql

什么是最有效和优雅的 SQL查询,查找包含“David”,“Moses”和“Robi”字样的字符串。假设该表名为T,列为C。

8 个答案:

答案 0 :(得分:23)

Select * from table where 
  columnname like'%David%' and 
  columnname like '%Moses%' and columnname like'%Robi%' 

答案 1 :(得分:19)

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

SELECT *
  FROM T
 WHERE CONTAINS(C, '"David" OR "Robi" OR "Moses"');

如果您希望搜索结果以大卫,罗比或摩西作为前缀的结果,您可以这样做:

SELECT *
  FROM T
 WHERE CONTAINS(C, '"David*" OR "Robi*" OR "Moses*"');

答案 2 :(得分:2)

Oracle SQL:

select * 
from MY_TABLE
where REGEXP_LIKE (company , 'Microsodt industry | goglge auto car | oracles    database')
  • company - 是数据库列名。
  • results - 此SQL将显示公司列行是否包含其中一个公司(OR短语) 请注意:不需要任何狂野的字符,它是内置的。

更多信息:http://www.techonthenet.com/oracle/regexp_like.php

答案 3 :(得分:2)

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

?

答案 4 :(得分:0)

如果您将所有搜索到的单词放在临时表中,请说@tmp和列col1,那么您可以试试这个:

Select * from T where C like (Select '%'+col1+'%' from @temp);

答案 5 :(得分:0)

也许EXISTS可以提供帮助。

and exists (select 1 from @DocumentNames where pcd.Name like DocName+'%' or CD.DocumentName like DocName+'%')

答案 6 :(得分:0)

这是我用来在多列中搜索多个单词的方法-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+'%' )
        )

答案 7 :(得分:-4)

Oracle SQL:

Oracle SQL中有“IN”运算符可以用于:

select 
    namet.customerfirstname, addrt.city, addrt.postalcode
from schemax.nametable namet
join schemax.addresstable addrt on addrt.adtid = namet.natadtid
where namet.customerfirstname in ('David', 'Moses', 'Robi'); 
相关问题