2017-02-19 50 views
0

我从Twitter API中将数据提取到我的数据库中。有一个“hashtags”列存储了推文中使用的主题标签列表。在MySql中计数多个出现的子字符串

Table name: brexittweets 
Column: hashtags varchar(500) 

我想统计hashtags的数量。例如

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

Tweet2: ['Brexit', 'Blair'] 

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

的结果应该是:

hashtag  count(hashtag) 
Brexit  3 
EUref  2 
Blair  2 
poll  1 

我想在做什么: 试图把引号“”之间串,但在同一行中出现多次。

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

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

+0

'[]'是否包含在字符串中? – McNets

+0

是的。这是它从Python写入的方式,但如果它们太成问题,我可以将它们除去。 –

+1

看一看:http://stackoverflow.com/a/2696901/3270427 – McNets

回答

0

假设所有的标签是由', '分开,你可以做到以下几点:

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

这里的SQL Fiddle

+0

谢谢。但是不起作用,因为这只是返回每条记录中的标签数量。我需要数据库中每个hashtag的数量。因此,例如'民意调查'应该返回一个1,这个查询不。 –

1

如果您只是对表格进行了规范化处理,以确保tweet中的每个标签都存储在自己的行中,那么使用COUNTGROUP BY即可轻松解决您的问题。

相关问题