我想決定是否將min_word_length設置爲2或3在我的新MySQL實例,所以我想如果我計算列中的2個字母單詞的數目是索引它會給出正確答案的指示。MySQL - min_word_length 2或3 - 需要計數
所以,問題是,是否有可能使用SQL查詢來計算列中的數字兩個字母的單詞?
我想決定是否將min_word_length設置爲2或3在我的新MySQL實例,所以我想如果我計算列中的2個字母單詞的數目是索引它會給出正確答案的指示。MySQL - min_word_length 2或3 - 需要計數
所以,問題是,是否有可能使用SQL查詢來計算列中的數字兩個字母的單詞?
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
我希望這有助於。
沒有測試,但你可以嘗試
SELECT SUM(
CASE WHEN yourColumn REGEXP '[[:<:]][a-zA-Z]{2}[[:>:]]'
THEN 1
ELSE 0 END
) AS matches
FROM ...
雖然我認爲,它可能如果2個字符的字是在一排一排只能算,沒有多少次。
更新:經過測試,它的工作原理和我想的一樣,所以請忽略此答案。
這是關於全文搜索。因此,他很可能希望在「foo ba bar fo foooooo」這樣的內容欄中填寫2個字符的字數。 – fancyPants 2012-04-05 11:49:05
@tombom完全正確 - 我需要知道在列中有多少個兩個字母的單詞,而不是整個列 - 感謝您花時間 – 2012-04-05 11:51:43