我需要一个选择,它将返回如下结果:
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'或任何其他组合的三个。
结果中必须包含所有的单词。
当前回答
如果你只是想找到匹配。
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
其他回答
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')
如果你只是想找到匹配。
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
尝试在SQL Server的全文索引中使用“Tesarus搜索”。如果您有数百万条记录,这比在搜索中使用“%”要好得多。Tesarus的内存消耗比其他的小。
尝试搜索这个函数:)
用"in"代替:
Select *
from table
where columnname in (word1, word2, word3)