CONTAINS sql функция не соответствует подчеркиванию - PullRequest
1 голос
/ 13 января 2010

У меня есть таблица TableName, такая как Id, Имя:

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

Я хочу получить все строки из этой таблицы, где имя содержит 'some'. У меня есть 2 способа:

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 работала правильно?

Ответы [ 3 ]

2 голосов
/ 13 января 2010

В последний раз, когда я смотрел (по общему признанию, SQL Server 2000) CONTAINS не поддерживал сопоставление с подстановочными знаками в начале слов, только в конце. Кроме того, вам может потребоваться проверить файлы шума, чтобы увидеть, игнорируется ли символ "_".

Также см.

Как заставить полнотекстовый поиск с подстановочными символами работать в SQL Server?

0 голосов
/ 13 января 2010

Попробуйте это:

SELECT * FROM TableName WHERE CONTAINS(Name,'some')
0 голосов
/ 13 января 2010

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

Если вы прочтете эту статью, вы увидите, что * означает префикс, это означает, что слово должно начинаться с этого, но подобно означает, что слово содержит ключевую фразу.

С наилучшими пожеланиями, Йордан

...