Это выглядит как странное поведение из полнотекстового индекса SQL.
FTI сохраняет номер в своем индексе с префиксом «NN», поэтому «123» сохраняется как «NN123».
Теперь, когда пользователь ищет слова, начинающиеся с N (то есть содержит «n *»), они также получают все числа.
Итак:
select [TextField]
from [MyTable]
where contains([TextField], '"n*"')
Возвращает:
MyTable.TextField
--------------------------------------------------
This text contains the word navigator
This text is nice
This text only has 123, and shouldn't be returned
Есть ли хороший способ исключить этот последний ряд? Есть ли последовательный обходной путь для этого?
Эти дополнительные "" необходимы для работы токена подстановочного знака:
select [TextField] from [MyTable] where contains([TextField], 'n*')
будет искать буквальное n * - а их нет.
--return rows with the word text
select [TextField] from [MyTable] where contains([TextField], 'text')
--return rows with the word tex*
select [TextField] from [MyTable] where contains([TextField], 'tex*')
--return rows with words that begin tex...
select [TextField] from [MyTable] where contains([TextField], '"tex*"')