【问题标题】:Count Substring Occurences in MYSQL using Case Statement使用 Case 语句计算 MYSQL 中的子字符串出现次数
【发布时间】:2016-09-01 22:54:45
【问题描述】:

我有一个包含多个子字符串的文本字符串,我想计算其中的出现次数。我看到了类似问题的解决方案,但我想知道这是否可以使用 case 语句或不创建新表来完成。

基本上,我使用的数据聚合/分析工具只接受非常基本的 MySQL 语句。

示例:

Paid Search:CLICK, Display:RICH_MEDIA, Display:RICH_MEDIA, Display:RICH_MEDIA, Display:RICH_MEDIA, Display:CLICK, Display:IMPRESSION, Display:IMPRESSION, Display:RICH_MEDIA, Display:RICH_MEDIA, Display:IMPRESSION, Display:CLICK

我想提取“Display:Rich_Media”的计数

【问题讨论】:

    标签: mysql string count substring


    【解决方案1】:

    您可以通过以下查询来完成此操作:

    SET @your_string :=
    'Paid Search:CLICK, Display:RICH_MEDIA, Display:RICH_MEDIA, Display:RICH_MEDIA, Display:RICH_MEDIA, Display:CLICK, Display:IMPRESSION, Display:IMPRESSION, Display:RICH_MEDIA, Display:RICH_MEDIA, Display:IMPRESSION, Display:CLICK';
    
    SELECT
        ROUND(
            (
                LENGTH(@your_string) - LENGTH(
                    REPLACE (
                        @your_string,
                        "Display:RICH_MEDIA",
                        ""
                    )
                )
            ) / LENGTH("Display:RICH_MEDIA")
        ) AS totalOccurrence;
    

    说明:

    • 字符串的长度 - 出现的所有字符串之后的长度 子字符串替换为空
    • 此减法的结果 = 您替换的字符数 = 子字符串的长度 * 子字符串的出现次数
    • 现在,如果您将结果除以子字符串的长度,您将 获取出现次数。

    【讨论】:

    • 我有多个字符串包含相同的“Display: Rich_Media”子字符串,但它们的长度并不总是相同。你对此有什么建议吗?
    • 请显示该字符串的所有可能性
    • 字符串有无限可能。有 20 个“子字符串”组成完整的字符串本身,全部用逗号分隔。这些子字符串之一最多可以有 50 个。
    • 就像您在帖子中所说的那样我想提取“Display:Rich_Media”的计数。此查询执行此操作。但我没有完全理解你在上一条评论中的意思。请多解释一下。
    猜你喜欢
    • 1970-01-01
    • 2012-12-18
    • 2020-02-21
    • 2012-02-12
    • 2014-05-19
    • 1970-01-01
    • 2022-01-09
    相关资源
    最近更新 更多