Нет необходимости искать самую длинную подстроку, поэтому каждая подстрока длиной более 5 всегда будет иметь подстроку из 5 символов, что соответствует количеству. Таким образом, нам нужно только проверить подстроки длиной 5.
В примерах данных есть три строки, которые встречаются три раза. _1114H
, _1114
и 1114H
(_
- показать местоположение пробела
).
В этом решении master..spt_values
используется вместо таблицы чисел.
declare @T table
(
ID int identity,
Data varchar(50)
)
insert into @T values
('KDHFOUDHGOENWFIJ 1114H4363SDFHDHGFDG'),
('GSDLGJSLJSKJDFSG 1114H20SDGDSSFHGSLD'),
('SLSJDHLJKSSDJFKD 1114HJSDHFJKSDKFSGG')
select top 1 substring(T.Data, N.Number, 5) as Word
from @T as T
cross apply (select N.Number
from master..spt_values as N
where N.type = 'P' and
N.number between 1 and len(T.Data)-4) as N
group by substring(T.Data, N.Number, 5)
order by count(distinct id) desc
Результат:
Word
------
1114