php - 如何计算 Mysql 数据库行中特定单词的出现次数?

标签 php mysql

我是 PHP 新手。我想计算 MySQL 数据库行中特定单词的出现次数。 例如:有两列名称和描述。

---------------------------------------------------------------
| name | description                                          |
---------------------------------------------------------------
| abcd | My name ***is*** abcd. My father's name ***is*** xyz |
---------------------------------------------------------------
| xyzt | My name ***is*** xyz. I am a good girl.              |
---------------------------------------------------------------

我想计算第一行描述列中单词“is”的出现次数。在上面的示例中,“is”在第一行出现两次,在第二行出现一次。请指导我。

最佳答案

在 StackOverflow 上有很多纯 SQL 尝试解决方案,但其中大多数计算字符串,而不是单词。所以let's reiterate :

一般来说,SQL,尤其是 MySQL,并不是这项工作的最佳选择。你最好用 PHP 来做(如果结果集“足够小”): p>

$count = preg_match_all("/\\b$word\\b/", $input, &$matches);

Alternative, richer solutions基于 str_word_count() 存在.

请注意,它可以在纯 SQL 中实现:

  • with a stored procedure like this one .

    在此示例中,将正则表达式替换为 [[:<:]]your_word[[:>:]]匹配一个特定的词。然后就是SELECT wordcount(your_column) FROM your_table .通过添加输入参数(要计算出现次数的单词)改进程序。然后* RLIKE CONCAT('[[:<:]]', input_parameter, '[[:>:]]') .

  • 即使没有存储过程(但 with the help of an auxiliary table)。

    在此示例中,替换 HAVING word <> ' 'HAVING word <> 'your_word'计算一个特定的词。 GROUP BY word, maintable.id (而不仅仅是 word )逐行获取详细信息。添加WHERE过滤掉行的子句。缺点:只有一个空格被识别为单词分隔符。

我认为采用基于 PHP 的解决方案的好处是显而易见的。

关于php - 如何计算 Mysql 数据库行中特定单词的出现次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24184052/

相关文章:

php - 如何在 Magento 中添加自定义字段以订购?

php - PHP 中的优先级队列

mysql - 使用 Node.js 搜索 PDF 文本

python - MySQLdb无法初始化字符集utf-8错误

Mysql max() 和 min() 之间的区别?

php - 在mysql数据库中存储未知大小的数组

php - 如何在 Laravel 中禁用 only_full_group_by 选项

php - 使用逗号分隔值 mysql 进行搜索

javascript - 使用 JavaScript 获取表单数据并使用 Ajax 发送数据

php - fatal error :mysqli