Мое окончательное решение основано на том факте, что «C #» трактуется иначе, чем «c #». Если буква перед символом «#» является заглавной, то «#» НЕ обрабатывается как символ разрыва слова. Поэтому мне пришлось написать скрипт, обновляющий таблицу, в которой был полнотекстовый индекс, чтобы изменить все 'c #' на 'C #' (затем я запускаю этот скрипт как задание sql, чтобы убедиться, что нет случая любовника c #), и убедиться, что при поиске это «c #» меняется на «C #», что я и сделал в своем коде.
В качестве альтернативы, если у вас есть SQL2008 и вы можете изменить полнотекстовый язык для индекса fts, вы можете настроить его на использование языка 'Neutral' в качестве средства разбиения по словам для индексированных столбцов. «Нейтральный» разделитель слов разбивается только на белый текст. Затем измените команду fts, указав в качестве языка тот, например, выберите * из FREETEXTTABLE (tblList, colLanguage, 'c #', LANGUAGE 0), который вы можете искать для 'c #' или 'C #', без каких-либо других изменений *, кроме перестройки индексов.
* вам может потребоваться изменить «полнотекстовый язык по умолчанию» для экземпляра базы данных, мне пришлось.