Hvis du vil hardkode det:
select EntityID, Situation
from Entity
where Situation like '%the the%'
or Situation like '%of of%'
or Situation like '%is is%'
Opdatering: Her er en lidt mindre hårdkodet tilgang:
select EntityID, Situation, right(s2, diff * 2 + 1) as RepeatedWords
from (
select EntityID, Situation, WordNumber,
substring_index(Situation, ' ', WordNumber) s1,
substring_index(Situation, ' ', WordNumber + 1) s2,
length(substring_index(Situation, ' ', WordNumber + 1)) - length(substring_index(Situation, ' ', WordNumber)) -1 diff
from `Entity` e
inner join (
select 1 as WordNumber
union all
select 2
union all
select 3
union all
select 4
union all
select 5
union all
select 6
union all
select 7
union all
select 8
union all
select 9
union all
select 10
) n
) a
where right(s1, diff) = right(s2, diff)
and diff > 0
order by EntityID, WordNumber
Det vil søge op til de første 10 ord eller deromkring og håndterer ikke store og små bogstaver, tegnsætning eller flere mellemrum korrekt, men det burde give dig en idé om en tilgang, du kan tage. Hvis du vil have den til at håndtere længere strenge, skal du bare fortsætte med at tilføje til UNION ALL-sætningerne.