sql >> Databasteknik >  >> RDS >> Mysql

Hur man hittar upprepade ord i en cell i SQL

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.



  1. MySql upsert och auto-increment orsakar luckor

  2. Rekommenderade Intel-processorer för SQL Server 2014 – mars 2015

  3. UPPDATERA med INNER JOIN eller MIN?

  4. Hur man öppnar en tabell i designvy i Microsoft Access