我需要为每一行计算以“https://t.co/”开头的链接部分出现在名为“Tweet_text”的列的文本中的次数。
我已经搞定了:
SELECT COUNT(REGEXP_CONTAINS('https://t.co/', Tweet_text)) As Cnt
FROM `MyTable`
但这会返回整个表的总计数,而不是逐行计数。
我需要为每一行计算以“https://t.co/”开头的链接部分出现在名为“Tweet_text”的列的文本中的次数。
我已经搞定了:
SELECT COUNT(REGEXP_CONTAINS('https://t.co/', Tweet_text)) As Cnt
FROM `MyTable`
但这会返回整个表的总计数,而不是逐行计数。
你可以试试这个查询:
SELECT ARRAY_LENGTH(REGEXP_EXTRACT_ALL(Tweet_text, 'https://t.co/'))
FROM MyTable
该函数REGEXP_CONTAINS仅返回是否找到您的正则表达式的状态:
TRUE如果value是正则表达式的部分匹配,则返回regexp。
如果要获取列中找到的子字符串的计数,则必须使用REGEXP_EXTRACT_ALLwith ARRAY_LENGTH。
你得到每行的计数(不是总和),因为你不再使用聚合函数(如COUNT)。