2011-03-28 91 views
3

我想通過包含在表列中的單詞數過濾MySQL查詢的結果。如何根據列中的單詞數量過濾MySQL結果?

例如,我有10個感言與列ID,名稱,網址,證言和其中五行有一個證明專欄有超過100個單詞組成的證言。

如何使用查詢來返回在該評論欄中少於100個單詞的行?

感謝,

+0

首先定義「字」 – 2011-03-28 15:00:38

+0

@Shrapnel:一系列一個或多個字符,其中任何一邊或兩邊都有空格? – 2011-03-28 15:07:13

回答

5

不,我建議他們做了很大規模偉大的方式,但...

http://www.mwasif.com/2008/12/count-number-of-words-in-a-mysql-column/

SELECT * 
FROM table 
WHERE LENGTH(field) - LENGTH(REPLACE(field, ' ', '')) + 1 < 100 

它實際上計數的空間..但是這對你來說可能已經足夠接近了。

+0

+1在上面的查詢中不需要 – jimy 2011-03-28 14:55:18

+0

@jimy這是一種......正如我所說的那樣,它計數空格,但是假設輸入正確,單詞的數量實際上更大1 – 2011-03-28 14:56:21

+1

true,它需要 – jimy 2011-03-28 14:59:05

2

MySQL並沒有真正的「單詞」計數功能,但您可以通過計算文本字段中空格的數量來獲得粗略的估計值。當然,有沒有「有多少個字符‘X’是有一個字符串函數),所以你必須在它去以一種迂迴的方式:

SELECT LENGTH(textfield) - LENGTH(REPLACE(textfield, ' ', '') AS words 
FROM ... 
HAVING words < 100 

基本上,獲取文本字段的長度,然後用空格刪除相同文本字段的長度,給出空格的數量

+0

oooh,優雅!爲你+1! – 2011-03-28 14:54:56

+0

文本的長度減去無空格的文本的長度,理論上應該返回單詞的數量減1 ...所以我認爲+1對你來說是奇怪的相關:) – 2011-03-28 14:59:44