Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Поиск строки по четкому совпадению  [new]
Mixon
Member

Откуда:
Сообщений: 353
Приветствую ВСЕХ!

Подскажите в какую сторону копать, есть две таблицы с текстовыми полями T1.txt и T2.txt
T1.txt содержит справочник, T2.txt содержит старые данные, ситуация в том что T1 и T2 можно связать только через поля *.txt

так вот в чем вопрос как данные в полях допустим строки с разделителем "пробел".

строки T2.txt могут быть как:
1)"Ав с 1"--100%;
2)"Ав.1 с"--100%;
3)"1 Ав с"--100%;
4)"Ав1 с"--100% с пропущенным разделителем;
5)"Ав с 2"--75% "Ав" и "с", подходит а вот "1"<>"2", частичное совпадение.

надо связать с T1.txt "АВ С 1"

с первым все понятно связываем через UPPER(T1.txt)=UPPER(T2.txt),
второй и третий вариант через кучу UPPER(T1.txt) LIKE UPPER('%1%') and UPPER(T1.txt) LIKE UPPER('%Ав%') and UPPER(T1.txt) LIKE UPPER('%c%'),
но вот что делать с вариантами:
четвертый, в искомой последовательности пропущен разделитель.
пятый строка совпадает не на 100%, а на 75%

ЗЫ Т1 и Т2 не большие таблицы 2-5к записей, надо постараться востановить связь между таблицами.
ЗЫЫ четкой маски данных нет, типа "АААА.1111.ББ"

Заранее спасибо за информацию.
31 янв 17, 22:26    [20167898]     Ответить | Цитировать Сообщить модератору
 Re: Поиск строки по четкому совпадению  [new]
invm
Member

Откуда: Москва
Сообщений: 9836
1. Строку поделить на фрагменты по разделителю. На форуме полно различных реализаций такой функции.
2. Из фрагментов убрать шумовые символы. Фрагменты отсортировать и склеить в строку.
3. Со второй строкой проделать то же самое.
4. Сравнить полученные строки.
31 янв 17, 22:44    [20167947]     Ответить | Цитировать Сообщить модератору
 Re: Поиск строки по четкому совпадению  [new]
Ролг Хупин
Member

Откуда: Чебаркуль
Сообщений: 4178
Mixon
Приветствую ВСЕХ!

Подскажите в какую сторону копать, есть две таблицы с текстовыми полями T1.txt и T2.txt
T1.txt содержит справочник, T2.txt содержит старые данные, ситуация в том что T1 и T2 можно связать только через поля *.txt

так вот в чем вопрос как данные в полях допустим строки с разделителем "пробел".

строки T2.txt могут быть как:
1)"Ав с 1"--100%;
2)"Ав.1 с"--100%;
3)"1 Ав с"--100%;
4)"Ав1 с"--100% с пропущенным разделителем;
5)"Ав с 2"--75% "Ав" и "с", подходит а вот "1"<>"2", частичное совпадение.

надо связать с T1.txt "АВ С 1"

с первым все понятно связываем через UPPER(T1.txt)=UPPER(T2.txt),
второй и третий вариант через кучу UPPER(T1.txt) LIKE UPPER('%1%') and UPPER(T1.txt) LIKE UPPER('%Ав%') and UPPER(T1.txt) LIKE UPPER('%c%'),
но вот что делать с вариантами:
четвертый, в искомой последовательности пропущен разделитель.
пятый строка совпадает не на 100%, а на 75%

ЗЫ Т1 и Т2 не большие таблицы 2-5к записей, надо постараться востановить связь между таблицами.
ЗЫЫ четкой маски данных нет, типа "АААА.1111.ББ"

Заранее спасибо за информацию.


по 4 и 5 подумайте, возможно искать кандидатов, сравнивая строки с выброшенными пробелами и цифрами, например
upper("Ав1с")
upper("Авс")
1 фев 17, 12:29    [20169080]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить