Это будет выполнять нечеткий матч , но есть потенциальные ловушки, но вы можете настроить логику и/или фильтр s
Я хотел бы добавить, если вы не можете использовать UDF, логика может быть легко перенесен в CROSS ОТНОСИТЬСЯ
Declare @YourTable table (company_name varchar(25),revenue int)
Insert Into @YourTable values
('123 opel AA' , 100 ),
('234 GForm BB' , 200 ),
('245 opel DF' , 250 ),
('235 Gform BC' , 350 )
Select CoName = RetVal
,Revenue = sum(Revenue)
,Records = count(Distinct Company_Name)
,Min_Co = min(company_name)
,Max_Co = max(company_name)
From @YourTable A
Cross Apply [dbo].[udf-Str-Parse](A.Company_Name,' ') B
Where len(RetVal)>3 -- significant word lenth
and try_convert(float,RetVal) is null -- exlude numeric values
Group By RetVal
возвращений
CoName Revenue Records Min_Co Max_Co
GForm 550 2 234 GForm BB 235 Gform BC
opel 350 2 123 opel AA 245 opel DF
синтаксический анализ UDF при необходимости
CREATE FUNCTION [dbo].[udf-Str-Parse] (@String varchar(max),@Delimiter varchar(10))
Returns Table
As
Return (
Select RetSeq = Row_Number() over (Order By (Select null))
,RetVal = LTrim(RTrim(B.i.value('(./text())[1]', 'varchar(max)')))
From (Select x = Cast('<x>' + replace((Select replace(@String,@Delimiter,'§§Split§§') as [*] For XML Path('')),'§§Split§§','</x><x>')+'</x>' as xml).query('.')) as A
Cross Apply x.nodes('x') AS B(i)
);
--Thanks Shnugo for making this XML safe
--Select * from [dbo].[udf-Str-Parse]('Dog,Cat,House,Car',',')
--Select * from [dbo].[udf-Str-Parse]('John Cappelletti was here',' ')
--Select * from [dbo].[udf-Str-Parse]('this,is,<test>,for,< & >',',')
Сколько таких подстрок у вас есть? и будут ли они всегда встречаться с фиксированным начальным и конечным индексом? –
Максимум 8 подстрок, но наиболее распространены 4 подстроки. Нет, они не начинаются с фиксированного начального или конечного индекса. Число, в начале, всегда фиксированный размер, но может быть www. перед некоторыми именами, а не перед другими. – Imageree
Просто сгенерируйте SQL с операторами 'case', как показано ниже, как только вы получите список подстрок. –