我需要一个选择,它将返回如下结果:

SELECT * FROM MyTable WHERE Column1 CONTAINS 'word1 word2 word3'

我需要所有的结果,即这包括字符串'word2 word3 word1'或'word1 word3 word2'或任何其他组合的三个。

结果中必须包含所有的单词。


当前回答

SELECT * FROM MyTable WHERE 
Column1 LIKE '%word1%'
AND Column1 LIKE '%word2%'
AND Column1 LIKE  '%word3%'

根据编辑问题将OR更改为AND。

其他回答

最好的方法是在表中的列上创建全文索引 用contains代替LIKE

SELECT * FROM MyTable WHERE 
contains(Column1, N'word1')
AND contains(Column1, N'word2')
AND contains(Column1, N'word3')

如果你正在使用Oracle数据库,那么你可以使用包含查询来实现这一点。包含查询比同类查询快。

如果你需要所有的单词

SELECT * FROM MyTable WHERE CONTAINS(Column1,'word1 and word2 and word3', 1) > 0

如果你需要什么词的话

SELECT * FROM MyTable WHERE CONTAINS(Column1,'word1 or word2 or word3', 1) > 0

包含列上CONTEXT类型的需要索引。

CREATE INDEX SEARCH_IDX ON MyTable(Column) INDEXTYPE IS CTXSYS.CONTEXT
select * from table where name regexp '^word[1-3]$'

or

select * from table where name in ('word1','word2','word3')

将SELECT * FROM MyTable WHERE Column1 CONTAINS 'word1 word2 word3'替换为在这些单词之间添加And:

SELECT * FROM MyTable WHERE Column1 CONTAINS 'word1 And word2 And word3'

详细信息请参见CONTAINS (Transact-SQL)。

在选择短语时,使用双引号:

SELECT * FROM MyTable WHERE Column1 CONTAINS '"Phrase one" And word2 And "Phrase Two"'

附注:在使用contains关键字之前,您必须首先在表上启用全文检索。有关更多详细信息,请参见全文搜索入门。

SELECT * FROM MyTable WHERE 
Column1 LIKE '%word1%'
AND Column1 LIKE '%word2%'
AND Column1 LIKE  '%word3%'

根据编辑问题将OR更改为AND。