Om du vill hårdkoda det:
select EntityID, Situation
from Entity
where Situation like '%the the%'
or Situation like '%of of%'
or Situation like '%is is%'
Uppdatering: Här är ett lite mindre hårdkodat tillvägagångssätt:
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 kommer att söka upp till de första 10 orden eller så, och hanterar inte skiftläge, skiljetecken eller flera mellanslag korrekt, men det borde ge dig en uppfattning om ett tillvägagångssätt du kan ta. Om du vill att den ska hantera längre strängar, fortsätt bara att lägga till i UNION ALL-satserna.