查询以计算单词 SQLite 3
Posted
技术标签:
【中文标题】查询以计算单词 SQLite 3【英文标题】:Query to count words SQLite 3 【发布时间】:2011-03-18 15:38:57 【问题描述】:有没有办法计算文本字符串中的单词数?
我正在使用 SQLite 3,我正在尝试编写一个查询,该查询需要一堆长文本字符串,并计算每个文本中的单词数。
我还想忽略 html 标记(或插入符号之间的任何内容),例如段落标记、中断标记等。
因此,当我从相应列中选择文本运行查询时,我会得到一个包含一些 html 标记的冗长文本输出,我只想计算单词。
如何编写查询来执行此操作?
【问题讨论】:
非常相关:string - How to count instances of character in SQL Column - Stack Overflow -- (只算空格数加一,只要字符串开头或结尾没有双空格/空格) 【参考方案1】:@Ziferius 的回答有一个小的语法错误,以下是一个有效的,我自己测试的。
SELECT someStr, CASE WHEN length(someStr) >= 1
THEN
(length(someStr) - length(replace(someStr, ' ', ''))) + 1
ELSE
(length(someStr) - length(replace(someStr, ' ', '')))
END as NumOfWords FROM someTable;
【讨论】:
【参考方案2】:前面的答案对于空白列是不正确的。您需要在您的选择中添加 case/when/then 语句:
SELECT someStr,
CASE WHEN length(someStr) >= 1
THEN
(length(someStr) - length(replace(someStr), ' ', '')) + 1
ELSE
(length(someStr) - length(replace(someStr), ' ', ''))
END as NumOfWords
FROM someTable;
已编辑:如果该列有 0 个空格,但其中有一个单词,则会错误地报告 0。更改条件以允许它。
来源:An Excel Trick I used to do the same thing
【讨论】:
【参考方案3】:据我所知,在 SQL lite 3 中没有办法直接统计字符串中的单词数。(我比较熟悉 mysql 和 ms sql)
您可以使用 Length 和 Replace 作为解决方法
SELECT length(@String) - length(replace(@String, ' ', '')) + 1
【讨论】:
以上是关于查询以计算单词 SQLite 3的主要内容,如果未能解决你的问题,请参考以下文章