【问题标题】:Query to count words SQLite 3查询以计算单词 SQLite 3
【发布时间】:2011-03-18 15:38:57
【问题描述】:

有没有办法计算文本字符串中的单词数?

我正在使用 SQLite 3,我正在尝试编写一个查询,该查询需要一堆长文本字符串,并计算每个文本中的单词数。

我还想忽略 html 标记(或插入符号之间的任何内容),例如段落标记、中断标记等。

因此,当我从相应列中选择文本运行查询时,我会得到一个包含一些 html 标记的冗长文本输出,我只想计算单词。

如何编写查询来执行此操作?

【问题讨论】:

标签: string count sqlite


【解决方案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
      

      【讨论】:

        猜你喜欢
        • 2012-02-26
        • 2022-01-14
        • 2014-05-18
        • 1970-01-01
        • 1970-01-01
        • 2015-06-08
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多