在MySql中计算多个出现的子串

时间:2017-02-19 11:01:45

标签: mysql sql database

我将Twitter API中的数据提取到我的数据库中。有一列专栏标题'它存储了推文中使用的主题标签列表。

class

我想计算主题标签的数量。例如

Table name: brexittweets
Column: hashtags varchar(500)

结果应该是:

                 Hashtags
Tweet1: ['EUref', 'Brexit', 'poll']

Tweet2: ['Brexit', 'Blair']

Tweet3: ['Brexit', 'Blair', 'EUref']

我在想做什么: 试图在引号之间取一个子串' ',但它在同一行中多次出现。

尝试使用strpos查找'的实例。 ',但它只返回第一个实例。

有没有办法用查询做到这一点?我正在考虑尝试一个程序,但它变得复杂,因为我需要使用PHP在网页上打印这些结果。

2 个答案:

答案 0 :(得分:1)

如果您只是对表格进行了规范化,使得推文中的每个标记都存储在自己的行中,那么使用COUNT GROUP BY可以轻松解决问题。

答案 1 :(得分:0)

假设所有标签都由', '分隔,您可以执行以下操作:

SELECT 
    hashtags, 
    ROUND (   
        (
            LENGTH(hashtags)
            - LENGTH( REPLACE ( hashtags , "', '", "") ) 
        ) / 4) + 1
     AS count
    from brexittweets

这是 SQL Fiddle