Вы можете начать с расстановки приоритетов по мнимым комбинациям (имя + фамилия, имя середины + фамилия, фамилия + суффикс и т. Д.).Затем для каждой комбинации вы можете написать инструкцию SELECT, которая возвращает
SELECT 50 AS score, tableId
FROM SearchTable
WHERE '%' + FirstName + ' ' + LastName + '%' LIKE @searchphrase
UNION
SELECT 40 AS score, tableId
FROM SearchTable
WHERE '%' + MiddleName + ' ' + LastName + '%' LIKE @searchphrase
ORDER BY score DESC
. Для каждого оператора вы можете манипулировать счетом на более высоком уровне (например, +5, если это полное совпадение в LastName).
Чтобы отфильтровать пробелы и другие не доступные для поиска символы, я предлагаю вам создать пользовательскую функцию .
Удачи!