Mysql
 sql >> Datenbank >  >> RDS >> Mysql

So finden Sie wiederholte Wörter einer Zelle in SQL

Wenn Sie es fest codieren möchten:

select EntityID, Situation
from Entity
where Situation like '%the the%'
or Situation like '%of of%'
or Situation like '%is is%'

Aktualisierung: Hier ist ein etwas weniger hartcodierter Ansatz:

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

Es sucht bis zu den ersten 10 Wörtern oder so und behandelt Groß- und Kleinschreibung, Satzzeichen oder mehrere Leerzeichen nicht richtig, aber es sollte Ihnen eine Vorstellung davon geben, wie Sie vorgehen können. Wenn Sie möchten, dass es längere Zeichenfolgen verarbeitet, fügen Sie einfach die UNION ALL-Anweisungen hinzu.