2012-03-29 16 views
4

我在一個表格中有2列,我想'總結'報告單詞總數。 是否可以運行MySQL查詢並找出列下的總詞數。Mysql +統計一列中的所有單詞

它基本上是由空格或多個空格分隔的任何文本。 不需要100%準確,因爲它只是一般指南。

可能嗎?

THX

回答

11

嘗試這樣:

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

這將算caracters的數量在您的專欄,並substracts在列caracters刪除所有空格的數量。因此,您知道您的行中有多少個空格,並因此知道有多少個單詞(大致是因爲您也可以輸入雙空格,這將作爲兩個單詞計算,但是您說您需要它,所以這應該就足夠了)。

+0

它也會將空字符串計爲1個字。 – 2012-03-29 06:50:07

+0

也是如此,幸運的是需要一個粗略的計數,否則查詢會相當複雜一些。 – 2012-03-29 06:51:51

+0

對於所問的問題,這是一個很好的答案。但@RickHoving LENGTH(關鍵字) - LENGTH(REPLACE(關鍵字,'','')))+1也可以完成這項工作。我想知道你爲什麼使用count()。謝謝! – geekidharsh 2017-11-16 15:38:03

1

一個不太粗算一下:

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,深度思考者 – SagarPPanchal 2014-05-05 13:38:48

+0

你可以添加一個樣本值來顯示這比選定的答案更好嗎? – tom10271 2017-07-20 03:56:46

6

伯爵只是給你發現的行數。你需要使用SUM來代替。

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

+0

在整個互聯網上唯一的答案真的有效! :) – Gediminas 2017-11-17 09:35:06