Мне нужен специальный оператор, который может быть немного лучше, чем LIKE, для запроса «похожих» значений.
СЦЕНАРИЙ:
У меня есть таблица учеников и таблица уроков. Таблица уроков была импортирована из другого программного обеспечения, поэтому столбец StudentID
в импортированных строках пуст. Поэтому нам нужно, чтобы пользователь вручную выбирал соответствующую строку ученика для каждого урока, а затем можно было заполнить столбец StudentID
, чтобы они правильно синхронизировались. Обе таблицы содержат имя и фамилию, но многие из них, скорее всего, написаны с ошибками.
После импорта строк я хотел бы представить пользователю имена из строк учеников, имена которых являются «пятью наиболее похожими» на значения, хранящиеся в каждой строке урока. Фактически, я хотел бы представить их в порядке убывания от наиболее близких к наименее похожим.
Запрос, содержащий оператор LIKE, не совсем сокращает его, потому что он требует, чтобы в столбце существовал конкретный текст, и он не возвращает «оценку сходства».
Насколько я понимаю (из нетехнических статей), почтовое отделение США очень хорошо решило эту проблему ... Люди все время неправильно пишут имена и названия улиц, но их алгоритм «найти похожие» очень эффективен.
Я знаю, что алгоритм может варьироваться от одного решения к другому. Например, я прочитал из статьи, что одни алгоритмы учитывают фонетику, другие - подсчет гласных и согласных, а другие считают, что «T» звучит как «P» при разговоре по телефону.
Я МОЖЕТ загрузить каждую запись в код своего приложения и написать свой собственный алгоритм на C #, VB.NET или чем-то еще, но с этим есть много проблем, включая производительность. Я бы предпочел выполнить это в рамках запроса, поэтому ищу альтернативы.
Я использую SQL Server Express, но уверен, что решение применимо к другим платформам баз данных.