Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
Владимир09 Member Откуда: Сообщений: 9 |
Всем доброго дня) Столкнулся с проблемой выборки частичных совпадений в разных таблицах. А именно: есть две таблицы В первой есть столбец "фио" и столбец с "дата рождения1" назовем эту таблицу table1 Во второй столбцы "фамлия" и "имя отчество" и "дата рождения2" назовем table2 Надо сравнить наиболее близкие совпадения. Я беру соединяю select * from table1 a full join table2 b on a."дата рождения1"=b."дата рождения2" where "фио"+"дата рождения1"="фамлия"+"имя отчество"+"дата рождения2" Но при таком запросе выдаются только полные совпадения, а как сделать, чтобы выдавал также те совпадения, в которых различия в 2,3 или 5 символов |
14 окт 18, 12:40 [21703592] Ответить | Цитировать Сообщить модератору |
aleks222 Member Откуда: Сообщений: 1244 |
"еще" и "ишо" - скока символов различается? |
14 окт 18, 13:06 [21703601] Ответить | Цитировать Сообщить модератору |
Владимир09 Member Откуда: Сообщений: 9 |
Два символа |
14 окт 18, 13:16 [21703602] Ответить | Цитировать Сообщить модератору |
Владимир09 Member Откуда: Сообщений: 9 |
Три даже |
14 окт 18, 13:16 [21703604] Ответить | Цитировать Сообщить модератору |
Владислав Колосов Member Откуда: Сообщений: 8350 |
Владимир09, в таких ситуациях принято рекомендовать использование алгоритма Левенштейна, но это не таблетка от всех болезней, т.к. тут дело в семантическом анализе. А это не чихнуть задача. |
14 окт 18, 14:49 [21703629] Ответить | Цитировать Сообщить модератору |
Владимир Затуливетер Member Откуда: Сообщений: 427 |
Делали такое на базе алгоритма Левенштейна. Для этого сделали сборку clr с функциями которые использовали при сравнеии, tsql реализация была тормознутей значительно. Но имейте в виду, что такие запросы практически не оптимизируются, придется сканить таблицы. И результат не 100% как понимаете, всегда будут записи которые не будут обработаны таким подходом. |
15 окт 18, 11:39 [21703963] Ответить | Цитировать Сообщить модератору |
Alexander Us Member Откуда: Сообщений: 1153 |
Владимир09, А сколько примерно строк в каждой из таблиц? |
15 окт 18, 13:12 [21704101] Ответить | Цитировать Сообщить модератору |
PizzaPizza Member Откуда: Сообщений: 417 |
Владимир09, Правильно ли я понимаю, что "различия в 2,3 или 5 символов" в вашем случае не применимы к датам, и, если мы говорим про русский язык, к именам и частично к отчествам, и, по сути, вам нужно искать сочетание даты рождения + ИО и некая фуззи лождик на фамилию? |
15 окт 18, 19:58 [21704486] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |