Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Zählt das Vorkommen eines Teilstrings in einer MySQL-Spalte

Dies sollte Ihnen eine Liste von screen_names und der Gesamtzahl aller verwendeten Hashtags geben.

SELECT  foo.screen_name, SUM(foo.counts) FROM 
  (
    SELECT screen_name, 
           LENGTH( tweet_text) - LENGTH(REPLACE(tweet_text, '#', '')) AS counts 
    FROM tweet_table 
  ) as foo 
GROUP BY  foo.screen_name

Aber ... es ist eine unangenehme Abfrage, wenn die Tabelle riesig ist. Ich kann einen bestimmten Benutzer in der inneren Auswahl angeben, wenn Sie nur Zählungen für einen einzelnen Benutzer benötigen. So:

SELECT  foo.screen_name, SUM(foo.counts) FROM 
 (
    SELECT screen_name, 
         LENGTH( tweet_text) - LENGTH(REPLACE(tweet_text, '#', '')) AS counts 
    FROM tweet_table WHERE  screen_name = 'tweeter_user_1' 
 ) as foo 
GROUP BY  foo.screen_name