Начало » Использование СУБД » Microsoft SQL Server » Сложный поиск соответствия.
Сложный поиск соответствия. [сообщение #2810] |
Sun, 23 July 2023 15:24 |
sergey020487
Сообщений: 6 Зарегистрирован: July 2023
|
Junior Member |
|
|
Добрый день. Помогите решить проблему. Немного предыстории. Я в SQL мягко сказать не очень, суда меня привела крайняя нужда помощи.
Раньше я подобные задачи обрабатывал на базе экселя, а точнее в Power Query. Но в силу огромной величины табличных данных PQ сдался.
Без помощи нужный скрипт на MS SQL я не напишу.
Задача такова:
Есть таблица Test. В ней много столбцов но нас интересует первый - Name.
В нем перечислены наименования товаров. Проблема в том, что некоторые названия обрезаны по количеству символов и как следствие некоторые имена не полные. Ну например:
ФОЛИЕВАЯ К-ТА 0,4МГ. №30 ТА
и
ФОЛИЕВАЯ К-ТА 0,4МГ. №30 ТАБ. /ВАЛЕНТА/
Товар указанный выше один и тот же, так как все символы до "Б. /ВАЛЕНТА/" совпадают.
Моя задача создать еще один столбец и в нем указать наименование производителя, в данном случае /ВАЛЕНТА/, даже если в названии товара в данной ячейки производитель отсутствует.
Проблема в том, что обрезаются названия как попало, это может быть и так:
ФОЛИЕВАЯ К-ТА 0,4МГ. №30 ТАБ. /ВАЛЕ
ФОЛИЕВАЯ К-ТА 0,4МГ. №30 ТАБ. /ВАЛЕНТА
Поэтому был создан реестр всех возможных названий:
/ВА, /ВАЛ, /ВАЛЕ, /ВАЛЕНТ, /ВАЛЕНТА, /ВАЛЕНТА/ (в столбик конечно же). Указанный реестр еще не интегрирован в БД. Лежит в экселе. Но предположим, что этот реестр так же интегрирован в SQL. И таблица называется manufactur
Логику решения я вижу одну:
1) Перебор. допустим мы в данный момент проверяем ячейку с наименованием "ФОЛИЕВАЯ К-ТА 0,4МГ. №30 ТА", обращаемся к реестру и узнаем, совпадает ли часть названия с какой либо позицией в реестре.
2) Если совпадений нет, то нужно пробежаться по всему списку name и найти такие же конструкции как "ФОЛИЕВАЯ К-ТА 0,4МГ. №30 ТА" и проверить есть ли в них часть текста совпадающая с реестром. Если нашлось, то указываем его в соседней ячейке у проверяемой ячейки.
3) Если в проверяемой ячейке уже есть конструкцию совподающая с реестром, то данную конструкцию из реестра тянем в соседнюю ячейку.
4) Если совпадений не, значит их нет. Идем к следующей ячейке.
Помогите решить задачу.
|
|
|
|
|
|
|
|
|
|
|
|
|
Переход к форуму:
Текущее время: Wed Dec 18 20:58:24 GMT+3 2024
Общее время, затраченное на создание страницы: 0.00867 секунд
|