Сопоставление имен может быть очень сложным делом. Вам нужно не только беспокоиться о «Джоне Смите» против «Смита, Джона», но и о Кэтрин против Кэтрин против Кейт против Кэти против Кэти. Я уверен, что для подобных целей существуют сторонние решения для интеллектуального анализа данных, хотя я не могу порекомендовать ни одного.
Если вы знаете, что ваши имена только в форме «FirstName LastName» и «LastName, FirstName», то вы можете попробовать что-то вроде этого:
SELECT
CASE
WHEN name LIKE '%,%'
THEN SUBSTRING(name, CHARINDEX(',', name) + 2, LEN(name)) + ' ' +
SUBSTRING(name, 1, CHARINDEX(',', name) - 1)
ELSE name
END AS name
Строковые функции могут зависеть от вашей конкретной СУБД. Кроме того, это довольно хрупко. Он опирается на точный формат с пробелом после столбца и т. Д. Вам нужно настроить его, если вы хотите лучше.
Я бы также посоветовал вам добавить представление о сорока таблицах как UNION ALL, чтобы вы могли работать со всеми ними одновременно. Может быть, что-то жестко закодировать в представлении, чтобы вы знали, из какой таблицы пришла каждая строка.
Наконец, вы можете изучить использование soundex, но реализовать его может быть сложно, если у вас нет опыта работы с ним.