sql >> Databáze >  >> RDS >> Mysql

Jak najít opakovaná slova buňky v SQL

Pokud to chcete napevno kódovat:

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

Aktualizace: Zde je trochu méně pevně zakódovaný přístup:

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

Prohledá až prvních 10 slov nebo tak, a nezpracovává správně velká a malá písmena, interpunkci nebo více mezer, ale měl by vám poskytnout představu o přístupu, který můžete zvolit. Pokud chcete, aby zpracovával delší řetězce, pokračujte v přidávání do příkazů UNION ALL.



  1. Jak monitorovat výkon PostgreSQL 12 pomocí OmniDB – část 1

  2. MySQL - Použití If Then Else v MySQL UPDATE nebo SELECT dotazech

  3. Použití SELECT INTO OUTFILE v MySQL

  4. Vazba proměnného parametru/výsledku s připravenými příkazy