如何计算mysql pdo中句子中的单词

时间:2015-05-30 17:11:30

标签: php mysql sql select pdo

我如何计算数据库中句子中的单词,例如:

id words

1  bananas, mango, orange, watermelon

2  bananas, mango, orange, watermelon

3  bananas, mango, orange, watermelon

4  bananas, mango, orange, watermelon

我只想数一下芒果的数量,如果算一算,我得到的结果是:4

这是我的查询

"SELECT count(words)as total FROM fuit WHERE ?????";

?这意味着我不知道如何在WHERE中使用它。

但是如何在mysql和pdo中查询?

2 个答案:

答案 0 :(得分:1)

假设"芒果"每行只能出现一次,您可以使用find_in_set找到它。请注意,find_in_set适用于逗号分隔的字符串,因此您必须删除空格:

SELECT COUNT(*)
FROM   fruit
WHERE  FIND_IN_SET ('mango', REPLACE(words, ' ', '')) > 0

答案 1 :(得分:1)

如果words字段中没有空格(例如bananas,mango,orange,watermelon),您可以使用FIND_IN_SET

 SELECT ... WHERE FIND_IN_SET('mango', words)

使用空格,您必须使用正则表达式,例如:

SELECT ... WHERE words RLIKE '(^|, )mango($|,)'

更好的是,考虑"正常化"您的数据 - 制作单独的words表:

id  word
1   mango
2   orange
etc

和一个联系表:

doc_id    word_id
1         1
1         2
etc
相关问题