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