SQL содержит «штат Огайо» не возвращает «штат Огайо» - PullRequest
0 голосов
/ 26 сентября 2019

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

NAME 
State Place
State of Ohio
State of Oh-debt
State of Ohio Highway
State of Ohio Office
State of Ohit

Все возвращается при поиске ..

SELECT t.Name FROM   tbl t  WHERE  CONTAINS (t.Name, '"State of"')
SELECT t.Name FROM   tbl t  WHERE  CONTAINS (t.Name, '"State of o"')

При поиске возвращается состояние состояния задолженности.

SELECT t.Name     FROM   tbl t    WHERE  CONTAINS (t.Name, '"State of oh"')

Но когда

 SELECT t.Name 
    FROM   tbl t
    WHERE  CONTAINS (t.Name, '"State of ohi"')

ничего не возвращается.

Я не хочу использовать LIKE "%%", поскольку потенциальное количество записей велико и может повлиять на производительность.Это способ обойти это?

Ответы [ 2 ]

0 голосов
/ 26 сентября 2019

Вы можете использовать подстановочные знаки в выражении Contains с *, например:


SELECT t.Name     FROM   tbl t    WHERE  CONTAINS (t.Name, '"State of ohi*"')
0 голосов
/ 26 сентября 2019

Может быть, что-то подобное может помочь?

select T.Name from  tbl t
where INSTR(upper(T.Name), 'STATE OF OHI', 1) > 0;

 --This is the correct sql server function
select T.Name from  tbl t
where CHARINDEX(upper(T.Name), 'STATE OF OHI', 1) > 0;
...