Si vous voulez le coder en dur :
select EntityID, Situation
from Entity
where Situation like '%the the%'
or Situation like '%of of%'
or Situation like '%is is%'
Mise à jour : Voici une approche un peu moins codée en dur :
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
Il recherchera jusqu'aux 10 premiers mots environ et ne gère pas correctement la casse, la ponctuation ou les espaces multiples, mais cela devrait vous donner une idée de l'approche que vous pouvez adopter. Si vous voulez qu'il gère des chaînes plus longues, continuez simplement à ajouter aux instructions UNION ALL.