2012-03-29 15 views
4

テーブルに2列あり、総数を「ぎこちなく」報告したいと思います。 MySQLクエリを実行して、列の総数を調べることは可能ですか?Mysql +列内のすべての単語を数えます

基本的には、スペースまたは複数のスペースで区切られた任意のテキストです。 単なる一般的なガイドとして100%正確である必要はありません。

可能ですか?

THX

答えて

11

このような何か試してみてください:

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

をこれはあなたのコラムでcaractersの数をカウントし、すべてのスペースを削除し、あなたのコラムにcaractersの数をsubstractsます。ここであなたはあなたの行にいくつのスペースがあるかを知っているので、そこにいくつの単語があるかを知ることができます(二重スペースで入力することもできるので、2単語としてカウントしますが、

+0

また、空文字列も1ワードとカウントします。 –

+0

これは本当に幸運なことに、大まかに数が必要だったため、クエリがかなり複雑になります。 –

+0

これは質問された質問に対する良い答えです。しかし、@ RickHoving LENGTH(キーワード) - LENGTH(REPLACE(キーワード、 ''、 '')))+1も同様に仕事をします。私はあなたがなぜそれの上にカウント()を使用したのか知りたいです。ありがとう! – geekidharsh

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

+0

サンプル値を追加して、これが選択した回答より優れていることを示すことはできますか? – tom10271

6

Countは単にあなたに見つかった行の数を示します。代わりにSUMを使用する必要があります。

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

+0

本当に効果があったインターネット全体の唯一の答え! :) – Gediminas

関連する問題