我在桌子下面。
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
字,并且不仅要从名称而且还要从描述中计算它的出现次数。
答案 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
子句以使其正常工作。
希望这也能帮助其他人。
感谢您的帮助(所有回复,删除和评论的人。)