我有一张大桌子,其中一列有来自许多用户(数千行)的文本回复。我需要在该响应列中找到特定单词的出现总数。如果我使用
SELECT count(*) from Table where Response like '%wordtobefound%'
它给出了包含“wordtobefound”的行数,但我需要在所有行中出现“wordtobefound”这个词的总数。
注意:我更喜欢用户定义的函数,我可以将它添加到数据库并一次又一次地使用。
我有一张大桌子,其中一列有来自许多用户(数千行)的文本回复。我需要在该响应列中找到特定单词的出现总数。如果我使用
SELECT count(*) from Table where Response like '%wordtobefound%'
它给出了包含“wordtobefound”的行数,但我需要在所有行中出现“wordtobefound”这个词的总数。
注意:我更喜欢用户定义的函数,我可以将它添加到数据库并一次又一次地使用。
SELECT SUM(BINARY (LENGTH(field_name) - LENGTH(REPLACE(field_name, "your_word", "")))/LENGTH("your_word")) FROM table_name;
尝试这个 :
SELECT
CAST((LENGTH(Response) - LENGTH(REPLACE(Response, 'wordtobefound', ""))) / LENGTH('wordtobefound') AS UNSIGNED) AS wordCount
FROM Table
您可以使用 SUM 作为总数:
SELECT
SUM(CAST((LENGTH(Response) - LENGTH(REPLACE(Response, 'wordtobefound', ""))) / LENGTH('wordtobefound') AS UNSIGNED)) AS wordCount
FROM Table