Sql Server, что делать, чтобы сделать ключ сортировки из строкового значения - PullRequest
0 голосов
/ 26 февраля 2010

Я получаю файлы данных из источника, который я не контролирую (правительство), и в записях есть поле «Название компании», которое мне фактически необходимо связать с существующими записями компании в моей базе данных. Я обеспокоен тем, что некоторые имена будут отличаться незначительными различиями, такими как «Компания X, Inc.» vs 'Компания X Inc'.

Итак, мои первоначальные мысли заключаются в том, чтобы создать поле ключа сопоставления на основе имени ToLower() и применить регулярное выражение для удаления всего пробела и специальных символов.

Есть ли лучшая методология, чтобы применить к этому?

1 Ответ

1 голос
/ 26 февраля 2010

это может сработать, но могут быть ложные совпадения, которые невозможно предотвратить, потому что у вас есть только решение на основе алгоритма. Лучше всего создать таблицу псевдонимов. Включите каждый вариант, когда-либо найденный для каждого названия компании и FK, в реальный идентификатор компании. Также включите строку для фактического имени.

AliasID CompanyID CompanyAlias
------- --------- ------------
1       1         Company X, Inc   <<--actual real company name
2       1         Company X Inc
3       1         Company X

Если точное совпадение имен не найдено в этой таблице при импорте данных, вы можете использовать предложенный вами алгоритм или другой, или использовать человеческий вклад и т. Д., Чтобы найти совпадение или создать новую компанию. В этот момент вставьте в таблицу псевдонимов. Если вы обнаружите, что ваше совпадение по какой-то причине неверно, вы можете изменить таблицу псевдонимов, чтобы сделать правильное сопоставление. Если вы используете только алгоритм, вам нужно будет включить исключения, и ваш алгоритм станет большим и медленным. С этой таблицей и хорошим индексом поиск совпадений должен быть быстрым.

...