1

我有一些表'TableName',例如 Id,Name:

1 | something
2 | _something
3 | something like that
4 | some_thing
5 | ...

我想从该表中获取名称包含“一些”的所有行。我有两种方法:

SELECT * FROM TableName WHERE Name like '%some%'

结果是表:

1 | something
2 | _something
3 | something like that
4 | some_thing

但是如果我使用 CONTAINS 函数

SELECT * FROM TableName WHERE CONTAINS(Name,'"*some*"')

我只得到

1 | something
3 | something like that

我应该怎么做才能使 CONTAINS 功能正常工作?

4

3 回答 3

2

我最后一次看(当然是 SQL Server 2000)CONTAINS不支持单词开头的通配符匹配,只支持结尾。此外,您可能需要检查噪音文件以查看“_”字符是否被忽略。

另见

如何让领先的通配符全文搜索在 SQL Server 中工作?

于 2010-01-13T12:24:31.740 回答
0

http://doc.ddart.net/mssql/sql70/ca-co_15.htm

如果您阅读本文,您会看到 * 表示前缀,这意味着单词必须以 this 开头,但 like 表示单词包含关键短语。

最好的问候, 约旦

于 2010-01-13T09:47:48.187 回答
0

尝试这个:

SELECT * FROM TableName WHERE CONTAINS(Name,'some')
于 2010-01-13T09:49:07.100 回答