2017-02-19 45 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即可輕鬆解決您的問題。

相關問題