在mysql中搜索字数统计查询

时间:2013-04-11 08:09:33

标签: php mysql word-count

我在桌子下面。

CREATE TABLE IF NOT EXISTS `product`
(
    `id` int(11) NOT NULL,
    `name` varchar(200) COLLATE utf8_unicode_ci NOT NULL,
    `description` varchar(200) COLLATE utf8_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

INSERT INTO `product` (`id`, `name`, `description`) VALUES
(1, 'Samsung', "this is samsung product description from samsung"),
(2, 'Mobile', "Samsung galaxy note2 from samsung store"),
(3, 'Smartphone', "Samsung");

现在我想查询产生如下结果的product表。

ID   Name       WordCount
1   Samsung        3
2   Mobile         2
3   Smartphone     1

如何在MySQL选择查询中计算此单词的出现次数。

修改

很抱歉没有清除我的观点。

但现在是。

我希望search来自所有行的Samsung字,并且不仅要从名称而且还要从描述中计算它的出现次数。

1 个答案:

答案 0 :(得分:3)

经过几个小时的google搜索和调试,我终于解决了。

我使用了char_length和replace的组合来完成这项任务。

我最终得到的是如下。

select  *,(
    (char_length(name) - char_length(replace(name,'sam',''))) +
    (char_length(description) - char_length(replace(description,'sam','')))
) / char_length('sam') as SearchCount
from
    product
order by
    SearchCount desc

上面的查询 CASE SENSITIVE 但不要担心我也用 CASE-INSESITIVE 解决了这个问题,请参阅下面的查询。

select  *,
(
    (char_length(name) - char_length(replace(LOWER(name),LOWER('Sam'),''))) +
    (char_length(description) - 
    char_length(replace(LOWER(description),LOWER('Sam'),'')))
) / char_length('sam') as SearchCount
from
    product
order by
    SearchCount desc

完成此查询后,我们需要做的就是添加WHERE子句以使其正常工作。

希望这也能帮助其他人。

感谢您的帮助(所有回复,删除和评论的人。)