Если вы действительно хотите определить сходство в точности так, как вы сформулировали в своем вопросе, то вам, как вы говорите, придется выполнить вычисление расстояния Левенштейна. Либо в коде, рассчитанном для каждой строки, извлеченной DataReader, либо в виде функции SQL Server.
Указанная проблема на самом деле более сложная, чем может показаться на первый взгляд, поскольку вы не можете предположить, что знаете, какие могут быть взаимно общие элементы между двумя строками.
Таким образом, в дополнение к Levensthein Distance вы, вероятно, также захотите указать минимальное количество последовательных символов, которые фактически должны совпадать (для того, чтобы можно было заключить достаточное сходство).
В сумме: Это звучит как слишком сложный и трудоемкий / медленный подход.
Интересно, что в SQL Server 2008 у вас есть функция DIFFERENCE , которую можно использовать для чего-то подобного.
Он оценивает фонетическое значение двух строк и вычисляет разницу. Я не уверен, что вы заставите его работать должным образом для выражений из нескольких слов, таких как заголовки фильмов, так как он плохо работает с пробелами или числами и слишком акцентирует начало строки, но это все еще интересно предикат, чтобы быть в курсе.
Если то, что вы на самом деле пытаетесь описать, является своего рода функцией поиска, то вам следует изучить возможности Полнотекстовый поиск SQL Server 2008. Он предоставляет встроенные Поддержка тезауруса , причудливый SQL предикат и механизм ранжирования для "лучших совпадений"
РЕДАКТИРОВАТЬ: Если вы хотите устранить дубликаты, возможно, вы могли бы взглянуть на SSIS Нечеткий поиск и Преобразование нечеткой группы . Я сам не пробовал, но это выглядит многообещающим лидерством.
EDIT2: Если вы не хотите копаться в SSIS и все еще боретесь с производительностью алгоритма Levensthein Distance, вы можете попробовать этот алгоритм , который выглядит менее сложным.