У нас есть данные, которые могут выглядеть примерно так:
A-10001
A-10002
A-10003
B-10001
B-10002
B-10003
И где мы хотели бы найти все совпадения, содержащие «A-100».Используя полнотекстовый поиск, мы делаем что-то вроде:
where contains(e.*, '"A-100*"')
Тем не менее, поскольку "-" считается границей разбиения по словам, а A - слово-шум (так как это один символ), запрос выполняетне вернуть никаких результатов.Мне интересно, есть ли какой-нибудь (простой) способ вернуть ожидаемые результаты.
Обратите внимание, я понимаю, что в этом упрощенном сценарии я мог бы использовать вместо "содержит" что-то вроде:
where
(e.myColumn1 like '%A-100%'
or e.myColumn2 like '%A-100%'
or e.myColumn3 like '%A-100%',
etc)
Но в моей ситуации это не сработает (в основном из-за соображений производительности и из-за большого количества столбцов, на которые мне нужно взглянуть).
Я также понимаю, что могу разбить строку поиска на двеслова, и сделать что-то вроде:
where
contains(e.*, '"100*"')
and (e.myColumn1 like '%A-100%'
or e.myColumn2 like '%A-100%'
or e.myColumn3 like '%A-100%',
etc)
Но опять же, поскольку есть много столбцов, это не идеальное решение.
Я заинтересован в решении для SQL Server 2005 ипозже, но если есть решение для SQL Server 2008, меня это тоже заинтересует.
Спасибо за любую помощь, Эрик