Mysql+计算一列中的所有单词

Mysql+计算一列中的所有单词,mysql,Mysql,我在一个表中有两列,我想“ruffly”报告总字数。 是否可以运行MySQL查询并找出一列中的总字数 它基本上是由一个空格或多个空格分隔的任何文本。 不需要100%准确,因为它只是一个通用指南 可能吗 thx试试这样的方法: SELECT COUNT(LENGTH(column) - LENGTH(REPLACE(column, ' ', '')) + 1) FROM table 这将计算列中的字符数,并减去列中的字符数以删除所有空格。因此,您知道您的行中有多少空格,并由此知道大致有多少单词,

我在一个表中有两列,我想“ruffly”报告总字数。 是否可以运行MySQL查询并找出一列中的总字数

它基本上是由一个空格或多个空格分隔的任何文本。 不需要100%准确,因为它只是一个通用指南

可能吗


thx

试试这样的方法:

SELECT COUNT(LENGTH(column) - LENGTH(REPLACE(column, ' ', '')) + 1)
FROM table
这将计算列中的字符数,并减去列中的字符数以删除所有空格。因此,您知道您的行中有多少空格,并由此知道大致有多少单词,因为您也可以键入一个双空格,这将算作两个单词,但您说您想要它,所以这应该足够了。

不太粗略的计算:

SELECT LENGTH(column) - LENGTH(REPLACE(column, SPACE(1), '')) 
FROM
  ( SELECT CONCAT(TRIM(column), SPACE(1)) AS column
    FROM
      ( SELECT REPLACE(column, SPACE(2), SPACE(1)) AS column
        FROM 
          ( SELECT REPLACE(column, SPACE(3), SPACE(1)) AS column
            FROM 
              ( SELECT REPLACE(column, SPACE(5), SPACE(1)) AS column
                FROM 
                  ( SELECT REPLACE(column, SPACE(9), SPACE(1)) AS column
                    FROM 
                      ( SELECT REPLACE(column, SPACE(17), SPACE(1)) AS column
                        FROM 
                          ( SELECT REPLACE(column, SPACE(33), SPACE(1)) AS column
                            FROM tableX
                          ) AS x
                      ) AS x
                  ) AS x
              ) AS x
          ) AS x
      ) AS x
  ) AS x 

Count只提供找到的行数。您需要使用SUM


从表中选择SUMLENGTHcolumn-LENGTHREPLACEcolumn,,+1

我自己在寻找答案时偶然发现了这篇文章,老实说,我已经测试了这里的所有答案,最接近的答案是@fikre的答案。然而,我担心在测试过程中,在单词之间有前导空格和/或额外空格的数据似乎对fikre的查询没有影响。所以,我正在寻找一种方法来识别单词之间的空格并删除它们。虽然我发现了一些使用高级功能的答案,这超出了我的技能范围,但我确实找到了一个非常简单的方法

tl;dr>@fikre的答案是唯一对我有效的答案,但我做了一个小调整,以确保获得最准确的字数

Query 1 -- This will return 5 "Word Count"
SELECT SUM(LENGTH(input) - LENGTH(REPLACE(input, ' ', '')) + 1) AS "Word Count" FROM
(SELECT TRIM(REPLACE(REPLACE(REPLACE(input,' ','<>'),'><',''),'<>',' ')) AS input
FROM (SELECT ' too   late  to the     party ' AS input) i) r;

Query 2 -- This will return 13 "Word Count"
SELECT SUM(LENGTH(input) - LENGTH(REPLACE(input, ' ', '')) + 1) AS "Word Count" 
FROM (SELECT ' too   late  to the     party ' AS input) i;
-- breakdown ' too   late  to the     party '
   1 leading space= 1 word count
   2 spaces after the first space from the word 'too'= 2 word count
   1 space after the first space from the word 'late'= 1 word count
   4 spaces after the first space from the word 'the'= 4 word count
   trailing space(s) wasn't counted at all.
   Total spaces > 1+2+1+4=8 + 5 word count = 13 
所以,基本上,如果数据行之间包含一百万个空格,免责声明:一个假设。我只测试了336896个空格,查询1仍将返回单词计数=5


注意:中间部分的replaceInput,,,,'>也会将空字符串计数为1个单词。这也是事实,幸运的是需要粗略计数,否则查询会更加复杂。这是对所问问题的一个很好的回答。但是@RickHoving LENGTHkeyword-LENGTHREPLACEkeyword,“,+1也能完成这项工作。我想知道你为什么在上面使用count。谢谢@如果没有计数,它会分别给出每行的字数。如果您添加计数,它将为您提供整列中所有单词的字数。您是否可以添加一个示例值以显示这比所选答案更好?解释这是为什么:这将减少重复空格,而上述查询将额外空格计为额外单词。因此,像“我在这里”这样的字符串只会以3个单词的形式出现,而在其他查询中,它会以更多的形式出现。整个互联网上唯一真正有效的答案是: