2012-04-05 4 views
2

新しいMySQLインスタンスでmin_word_lengthを2または3に設定するかどうかを判断しようとしているので、列の2文字の単語数を数えればわかりますそれは正しい答えの指標を与えるでしょう。MySQL - min_word_length 2または3 - カウントが必要

SQLクエリーを使用して、1つの列内の2文字の単語を数えることは可能ですか?

答えて

-1

LEN()関数は、テキストフィールドの値の長さを返します。

SELECT LEN(column_name) FROM table_name 

COUNT(*)関数は、テーブル内のレコード数を返します。

SELECT COUNT(column_name) FROM table_name 
WHERE LEN(column_name)=2 

UPDATE:

SELECT COUNT(column_name) FROM table_name 

だからあなたのクエリは、このようなものでなければなりません

申し訳ありませんが、私はあなたを誤解したと思います。あなたが望む場合、私はあなたがしたいことをするための機能を構築していないのではないかと恐れています。だからあなたは自分で機能を作らなければならない。このような何か作業をする必要があります:あなたがあなた自身でそれをテストする必要がありますので

  CREATE FUNCTION [dbo].[WordCount] (@InputString VARCHAR(4000)) 
      RETURNS INT 
      AS 
      BEGIN 

      DECLARE @Index   INT 
      DECLARE @Char   CHAR(1) 
      DECLARE @PrevChar  CHAR(1) 
      DECLARE @WordCount  INT 
      DECLARE @CharCount  INT 

      SET @Index = 1 
      SET @WordCount = 0 

      WHILE @Index <= LEN(@InputString) 
      BEGIN 
      SET @Char  = SUBSTRING(@InputString, @Index, 1) 
      SET @CharCount = @CharCount + 1 
      SET @PrevChar = CASE WHEN @Index = 1 THEN ' ' 
        ELSE SUBSTRING(@InputString, @Index - 1, 1) 
      END 


      IF @PrevChar = ' ' 
       SET @CharCount = 1 
      END 


      IF @Char = ' ' AND @CharCount < 3 AND @CharCount > 1 
       SET @WordCount = @WordCount + 1 

      SET @Index = @Index + 1 
      END 

      RETURN @WordCount 

      END 

は今、私はそれをテストしていませんが、それは動作するはずです。選択した文字列の2文字すべての単語が返されます。 3文字の単語を取得するには

IF @Char = ' ' AND @CharCount < 4 AND @CharCount > 2 

私はこれが役に立ちそうです。

+0

フルテキスト検索です。だから、彼はおそらく "foo ba bar fo foooooo"のような内容の列に2文字の単語を数えたいと思っています。 – fancyPants

+0

@tombom正確に - 私は列の中にいくつかの2文字の単語を知っている必要があります、全体としてcolではありません - 時間を取るために感謝tho –

0

テストが、私は思うが、あなたは、2文字の単語が行にある場合、それは一列のみではなく、何回を数えるかもしれないと、

SELECT SUM(
CASE WHEN yourColumn REGEXP '[[:<:]][a-zA-Z]{2}[[:>:]]' 
THEN 1 
ELSE 0 END 
) AS matches 
FROM ... 

を試みることができるわけではありません。

更新:私が思ったようにテストされて動作しますので、この回答を無視してください。

関連する問題