Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como encontrar palavras repetidas de uma célula no SQL


Se você quiser codificá-lo:
select EntityID, Situation
from Entity
where Situation like '%the the%'
or Situation like '%of of%'
or Situation like '%is is%'

Atualização: Aqui está uma abordagem um pouco menos codificada:
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

Ele pesquisará até as primeiras 10 palavras ou mais e não lidará com maiúsculas, pontuação ou vários espaços corretamente, mas deve dar uma ideia de uma abordagem que você pode adotar. Se você quiser que ele lide com strings mais longas, continue adicionando as instruções UNION ALL.