Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да намерите повтарящи се думи на клетка в SQL

Ако искате да го кодирате твърдо:

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

Актуализация: Ето малко по-малко твърдо кодиран подход:

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

Той ще търси до първите 10 думи и не обработва правилно малки и препинателни знаци или множество интервали, но трябва да ви даде представа за подход, който можете да предприемете. Ако искате да обработва по-дълги низове, просто продължете да добавяте към операторите 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. В SQL как да получа максималната стойност за цяло число?

  2. Как да инсталирате MariaDB база данни в Debian 10

  3. Как да извикате съхранени процедури с EntityFramework?

  4. Най-ефективният начин за получаване на броя на редовете в таблицата

  5. Кой е най-добрият начин да правите инкрементални архиви в MySQL?