SQLRU.net
Разработка приложений баз данных

Начало » Использование СУБД » Microsoft SQL Server » Сложный поиск соответствия.
Сложный поиск соответствия. [сообщение #2810] Sun, 23 July 2023 15:24 Переход к предыдущему сообщению
sergey020487 в настоящее время не в онлайне  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) Если совпадений не, значит их нет. Идем к следующей ячейке.
Помогите решить задачу.



 
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Сообщение не прочитано
Предыдущая тема: Скрипт sql в xml
Следующая тема: Запрос + представление или функция, как лучше сделать?* (Задача со звездочкой)
Переход к форуму:
  


Текущее время: Thu May 16 17:44:39 GMT+3 2024

Общее время, затраченное на создание страницы: 0.00864 секунд