2012-04-05 35 views
2

我想決定是否將min_word_length設置爲2或3在我的新MySQL實例,所以我想如果我計算列中的2個字母單詞的數目是索引它會給出正確答案的指示。MySQL - min_word_length 2或3 - 需要計數

所以,問題是,是否有可能使用SQL查詢來計算列中的數字兩個字母的單詞?

回答

-1

LEN()函數返回文本字段中值的長度。

SELECT LEN(column_name) FROM table_name 

的COUNT(*)函數返回的記錄在一個表中的號碼:

SELECT COUNT(column_name) FROM table_name 

所以,你的查詢應該是這樣的:

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

UPDATE:

好吧抱歉,我想我誤解了你。在你想要的情況下,恐怕沒有功能的構建可以做你想做的事情。所以你必須自己做一個功能。像這樣的東西應該工作:

  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 2012-04-05 11:49:05

+0

@tombom完全正確 - 我需要知道在列中有多少個兩個字母的單詞,而不是整個列 - 感謝您花時間 – 2012-04-05 11:51:43

0

沒有測試,但你可以嘗試

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

雖然我認爲,它可能如果2個字符的字是在一排一排只能算,沒有多少次。

更新:經過測試,它的工作原理和我想的一樣,所以請忽略此答案。