使用Case语句计算MYSQL中的子字符串出现次数

时间:2016-05-06 19:00:10

标签: mysql string count substring

我有一串文字,其中包含多个子字符串,我想计算出现的情况。我看到了类似问题的解决方案,但我想知道是否可以使用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

我想提取一下"显示:Rich_Media"

1 个答案:

答案 0 :(得分: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;

<强>解释

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