Начало » Использование СУБД » 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) Если совпадений не, значит их нет. Идем к следующей ячейке. 
Помогите решить задачу. 
 
 
 
		
		
		
 |  
	| 
		
	 | 
 
 
 |  
	| 
		
 |  
	| 
		
 |  
	| 
		
 |  
	| 
		
 |  
	| 
		
 |  
	| 
		
 |  
	| 
		
 |  
	| 
		
 |  
	| 
		
 |  
	| 
		
 |   
Переход к форуму:
 
 Текущее время: Tue Nov 04 03:57:56 GMT+3 2025 
 Общее время, затраченное на создание страницы: 0.00882 секунд 
 |