什么是最有效和优雅的 SQL查询,查找包含“David”,“Moses”和“Robi”字样的字符串。假设该表名为T,列为C。
答案 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')
答案 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');