2011-03-28 79 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

相关问题