У меня есть таблица Products в базе данных SQL Server, и мне нужно устранить устаревшую хранимую процедуру, которая использует полнотекстовую индексацию. Для наших целей давайте предположим, что таблица Products имеет два идентификатора полей, ключевые слова. Поле "Ключевые слова" заполняется следующим образом:
ROLAND SA-300 Этот Roland SA-300 является в состоянии MINT!
Когда я запускаю следующий оператор, я могу получить запись:
SELECT * FROM Products WHERE Keywords LIKE '%SA-300%'
Однако, когда я запускаю любое из следующих утверждений, я получаю нулевые результаты:
SELECT * FROM Products WHERE CONTAINS(Keywords, ' SA-300 ')
SELECT * FROM Products WHERE CONTAINS(Keywords, 'SA-300')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"SA-300"')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"*SA-300*"')
Но я знаю, что функция CONTAINS() работает, потому что я получаю результаты при запуске любого из них:
SELECT * FROM Products WHERE CONTAINS(Keywords, ' Roland ')
SELECT * FROM Products WHERE CONTAINS(Keywords, 'Roland')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"Roland"')
SELECT * FROM Products WHERE CONTAINS(Keywords, '"*Roland*"')
SELECT * FROM Products WHERE CONTAINS(Keywords, 'Roland')
Мне нужно выяснить, почему функция CONTAINS() не работает с термином "SA-300". Я новичок в полнотекстовых индексах, поэтому любая помощь приветствуется.