sql >> Database teknologi >  >> RDS >> Mysql

Sådan finder du gentagne ord i en celle i SQL

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.



  1. doktrin - få næste og forrige optegnelse

  2. Twitter-konkurrence ~ gemmer tweets (PHP &MySQL)

  3. Indstil en standardværdi for en kolonne i SQLite:DEFAULT Constraint

  4. Hvordan får man datatypen mysql tabelkolonner?