sql >> Database >  >> RDS >> Mysql

Woorden tellen in een tabelkolom

@Elad Meidar, ik vind je vraag leuk en ik heb een oplossing gevonden:

SELECT SUM(total_count) as total, value
FROM (

SELECT count(*) AS total_count, REPLACE(REPLACE(REPLACE(x.value,'?',''),'.',''),'!','') as value
FROM (
SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(t.sentence, ' ', n.n), ' ', -1) value
  FROM table_name t CROSS JOIN 
(
   SELECT a.N + b.N * 10 + 1 n
     FROM 
    (SELECT 0 AS N UNION ALL SELECT 1 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) a
   ,(SELECT 0 AS N UNION ALL SELECT 1 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) b
    ORDER BY n
) n
 WHERE n.n <= 1 + (LENGTH(t.sentence) - LENGTH(REPLACE(t.sentence, ' ', '')))
 ORDER BY value

) AS x
GROUP BY x.value

) AS y
GROUP BY value

Hier is de volledig werkende viool:http://sqlfiddle.com/#!2/17481a/ 1

Eerst doen we een zoekopdracht om alle woorden te extraheren zoals uitgelegd hier door @peterm (volg zijn instructies als u het totale aantal verwerkte woorden wilt aanpassen). Dan zetten we dat om in een subquery en dan COUNT en GROUP BY de waarde van elk woord, en voer daarbovenop nog een zoekopdracht uit naar GROUP BY niet gegroepeerde woorden gevallen waarin begeleidende tekens aanwezig kunnen zijn. dat wil zeggen:hallo =hallo! met een REPLACE



  1. Controleer op geldige SQL-kolomnaam

  2. Hoe een externe sleutelbeperking in SQL te verwijderen?

  3. Hoe MySQL hoofdletterongevoelig en accentongevoelig werkt in UTF-8

  4. Hoe een afbeelding van een mysql-blob weer te geven