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