sql >> Database >  >> RDS >> Mysql

Hoe herhaalde woorden van een cel in SQL te vinden

Als je het hard wilt coderen:

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

Bijwerken: Hier is een iets minder hard gecodeerde aanpak:

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

Het zoekt tot de eerste 10 woorden of zo, en verwerkt hoofdletters, interpunctie of meerdere spaties niet goed, maar het zou u een idee moeten geven van een benadering die u kunt volgen. Als je wilt dat het langere strings aankan, blijf dan gewoon toevoegen aan de UNION ALL-statements.



  1. Hoe het mysql root-wachtwoord opnieuw in te stellen?

  2. Linker join of selecteer uit meerdere tabellen met komma (,)

  3. Hoe controleer ik of een waarde al bestaat om duplicaten te voorkomen?

  4. mysql slaat automatisch tijdstempel voor het maken van records op