Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak znaleźć powtarzające się słowa komórki w SQL

Jeśli chcesz to zakodować na stałe:

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

Aktualizacja: Oto nieco mniej zakodowane podejście:

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

Będzie przeszukiwać maksymalnie 10 pierwszych słów i nie obsługuje prawidłowo wielkości liter, interpunkcji ani wielu spacji, ale powinno dać wyobrażenie o tym, jakie podejście możesz zastosować. Jeśli chcesz, aby obsługiwał dłuższe łańcuchy, po prostu dodawaj do instrukcji UNION ALL.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL Left Joins:Wybierz wszystko z jednej tabeli, ale tylko pasującą wartość w drugiej tabeli z kryteriami

  2. Jak posortować wyniki według sygnatury czasowej z wyjątkiem jednego z nich?

  3. Wyszukiwanie na żywo za pomocą PHP AJAX i XML

  4. Warunkowa transformacja podziału:eksport danych z serwera SQL do baz danych Oracle i MySQL

  5. Zapytanie SQL w FB JavaScript