2012-03-29 22 views
4

Ich habe 2 Spalten in einer Tabelle und ich möchte 'ruffly' über die Gesamtzahl der Wörter berichten. Ist es möglich, eine MySQL-Abfrage auszuführen und die Gesamtzahl der Wörter in einer Spalte zu ermitteln.Mysql + zählen alle Wörter in einer Spalte

Es wäre im Grunde jeder Text durch ein Leerzeichen oder mehrere Leerzeichen getrennt. Muss nicht 100% genau sein, da es nur eine allgemeine Anleitung ist.

Möglich?

thx

Antwort

11

versuchen, etwas wie folgt aus:

SELECT COUNT(LENGTH(column) - LENGTH(REPLACE(column, ' ', '')) + 1) 
FROM table 

Dies wird die Anzahl der caracters in Ihrer Spalte, und subtrahiert die Anzahl der caracters in Ihrer Spalte Entfernen aller Leerzeichen zählen. Hiermit wissen Sie, wie viele Leerzeichen Sie in Ihrer Zeile haben und wie viele Wörter es gibt (etwa weil Sie auch ein doppeltes Leerzeichen eingeben können, das wird als zwei Wörter gezählt, aber Sie sagen, dass Sie es wollen, also sollte das ausreichen).

+0

Es zählt auch leere Strings als 1 Wort. –

+0

Das stimmt auch, glücklicherweise gab es eine Nachfrage nach einer groben Zählung, sonst wäre die Abfrage ein bisschen komplexer. –

+0

Dies ist eine gute Antwort auf die gestellte Frage. Aber @RickHoving LENGTH (Schlüsselwort) - LENGTH (REPLACE (Schlüsselwort, '', ''))) +1 erledigt den Job auch. Ich würde gerne wissen, warum du Count() oben drauf benutzt hast. Danke! – geekidharsh

1

Eine weniger grobe Zählung:

SELECT LENGTH(column) - LENGTH(REPLACE(column, SPACE(1), '')) 
FROM 
    (SELECT CONCAT(TRIM(column), SPACE(1)) AS column 
    FROM 
     (SELECT REPLACE(column, SPACE(2), SPACE(1)) AS column 
     FROM 
      (SELECT REPLACE(column, SPACE(3), SPACE(1)) AS column 
      FROM 
       (SELECT REPLACE(column, SPACE(5), SPACE(1)) AS column 
       FROM 
        (SELECT REPLACE(column, SPACE(9), SPACE(1)) AS column 
        FROM 
         (SELECT REPLACE(column, SPACE(17), SPACE(1)) AS column 
         FROM 
          (SELECT REPLACE(column, SPACE(33), SPACE(1)) AS column 
          FROM tableX 
         ) AS x 
        ) AS x 
       ) AS x 
      ) AS x 
     ) AS x 
    ) AS x 
) AS x 
+0

+1, tiefer Denker – SagarPPanchal

+0

Können Sie einen Beispielwert hinzufügen, um anzuzeigen, dass dies besser ist als die ausgewählte Antwort? – tom10271

6

Count einfach gibt Ihnen die Anzahl der gefundenen Zeilen. Sie müssen stattdessen SUM verwenden.

SELECT SUM(LENGTH(column) - LENGTH(REPLACE(column, ' ', '')) + 1) FROM table

+0

die einzige Antwort im ganzen Internet, die wirklich funktioniert hat! :) – Gediminas

Verwandte Themen