【问题标题】:How can I filter a MySQL result by the amount of words in a column?如何按列中的字数过滤 MySQL 结果?
【发布时间】:2011-03-28 22:53:36
【问题描述】:

我正在尝试按表列中包含的单词数过滤 MySQL 查询的结果。

例如,我有 10 个推荐,其中包含 id、name、url、testimonial 列,其中 5 行有一个超过 100 个单词的推荐列来组成推荐。

如何使用查询仅返回该推荐列中少于 100 个单词的行?

谢谢,

【问题讨论】:

  • @Shrapnel:一系列一个或多个字符,两边或两边都有空格?

标签: php mysql


【解决方案1】:

我并不是在暗示他们的做法非常棒,但是...

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

它实际上计算了空格......但这对你来说可能已经足够接近了。

【讨论】:

  • @jimy 有点……正如我所说,它计算空格,但假设输入正确,单词的数量实际上是 1。
【解决方案2】:

MySQL 并没有真正的“单词”计数功能,但您可以通过计算文本字段中的空格数来粗略估计。当然,没有“字符串函数中有多少个字符'x'),所以你必须以迂回的方式去处理它:

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

基本上,获取文本字段的长度,然后减去删除空格的相同文本字段的长度,得到空格数。

【讨论】:

  • 文本的长度减去不带空格的文本的长度理论上应该返回单词数减去 1 ...所以我认为 +1 对你来说是奇怪的相关:)跨度>
猜你喜欢
  • 2017-05-03
  • 2021-12-06
  • 1970-01-01
  • 2023-02-25
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 2011-01-12
  • 1970-01-01
相关资源
最近更新 更多