【发布时间】:2011-03-28 22:53:36
【问题描述】:
我正在尝试按表列中包含的单词数过滤 MySQL 查询的结果。
例如,我有 10 个推荐,其中包含 id、name、url、testimonial 列,其中 5 行有一个超过 100 个单词的推荐列来组成推荐。
如何使用查询仅返回该推荐列中少于 100 个单词的行?
谢谢,
【问题讨论】:
-
@Shrapnel:一系列一个或多个字符,两边或两边都有空格?
我正在尝试按表列中包含的单词数过滤 MySQL 查询的结果。
例如,我有 10 个推荐,其中包含 id、name、url、testimonial 列,其中 5 行有一个超过 100 个单词的推荐列来组成推荐。
如何使用查询仅返回该推荐列中少于 100 个单词的行?
谢谢,
【问题讨论】:
我并不是在暗示他们的做法非常棒,但是...
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
它实际上计算了空格......但这对你来说可能已经足够接近了。
【讨论】:
MySQL 并没有真正的“单词”计数功能,但您可以通过计算文本字段中的空格数来粗略估计。当然,没有“字符串函数中有多少个字符'x'),所以你必须以迂回的方式去处理它:
SELECT LENGTH(textfield) - LENGTH(REPLACE(textfield, ' ', '') AS words
FROM ...
HAVING words < 100
基本上,获取文本字段的长度,然后减去删除空格的相同文本字段的长度,得到空格数。
【讨论】: