我需要一个选择,它将返回如下结果:
SELECT * FROM MyTable WHERE Column1 CONTAINS 'word1 word2 word3'
我需要所有的结果,即这包括字符串'word2 word3 word1'或'word1 word3 word2'或任何其他组合的三个。
结果中必须包含所有的单词。
我需要一个选择,它将返回如下结果:
SELECT * FROM MyTable WHERE Column1 CONTAINS 'word1 word2 word3'
我需要所有的结果,即这包括字符串'word2 word3 word1'或'word1 word3 word2'或任何其他组合的三个。
结果中必须包含所有的单词。
当前回答
用"in"代替:
Select *
from table
where columnname in (word1, word2, word3)
其他回答
用"in"代替:
Select *
from table
where columnname 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关键字之前,您必须首先在表上启用全文检索。有关更多详细信息,请参见全文搜索入门。
Use:
SELECT * FROM MyTable WHERE Column1 Like "*word*"
这将显示column1的部分值包含word的所有记录。
如果你只是想找到匹配。
SELECT * FROM MyTable WHERE INSTR('word1 word2 word3', Column1)<>0
SQL服务器:
CHARINDEX(Column1, 'word1 word2 word3', 1)<>0
得到精确匹配。例子:(ab;;;交流;,;b)将不会匹配。
SELECT * FROM MyTable WHERE INSTR(';word1;word2;word3;', ';'||Column1||';')<>0
如果你正在使用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