MS SQL поиск внутри одинарной кавычки - PullRequest
0 голосов
/ 02 марта 2020

У меня есть таблица (Table1) в MS SQL, например:

ID | Name
--- -----------
1  | Robert Bart
2  | Andy Wor
3  | Sam O'Neil
4  | Bill Neil

Полный текст включен, и мой T SQL выглядит следующим образом:

SELECT *
FROM Table1
WHERE CONTAINS([Name], @Keywords)

Параметр @Keywords - это NVARCHAR (MAX).

Моя проблема в том, что когда @Keyworkd имеет значение Neil, в результате я получаю только 4 записи; есть способ получить записи 3 и 4 от выбранного Нила как @Keywords?

Я использую MS SQL Server 2017.

1 Ответ

0 голосов
/ 02 марта 2020

Вам будет сложно настроить Microsoft FTS.
Средства разбиения по словам меняются с каждой версией SQL Сервера и зависят от языка, который вы использовали для создания полнотекстового индекса.
Возможно, вам удастся найти язык по умолчанию, который разделяет O'Neil на O + Neil, но я бы на это не рассчитывал.
Подробнее о настройке идентификаторов локали: CREATE FULLTEXT INDEX с LCID

Если вы действительно хотите настроить средства разбиения по словам, у вас есть 2 варианта:

  1. Создать пользовательский словарь
  2. Создать библиотеку языковых ресурсов

Самый простой обходной путь - разделить имена по разделителям, таким как кавычки, перед вставкой их в Table1, например REPLACE(Name, '''', ' ')
Если вам нужно исходное полное имя, просто сохраните его в другом колонка / таблица.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...