我如何计算数据库中句子中的单词,例如:
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中查询?
答案 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