Php 如何在mysql-pdo中计算句子中的单词
我如何计算数据库中句子中的单词,例如:Php 如何在mysql-pdo中计算句子中的单词,php,mysql,sql,select,pdo,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 FRO
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 ?????";
这意味着我不知道如何在何处使用它
但mysql和pdo中的查询是如何做到这一点的呢?假设“mango”在每行中只能出现一次,您可以使用它来定位它。请注意,find_in_set
适用于逗号分隔的字符串,因此您必须去掉空格:
SELECT COUNT(*)
FROM fruit
WHERE FIND_IN_SET ('mango', REPLACE(words, ' ', '')) > 0
如果
单词
字段中没有空格(例如香蕉、芒果、橘子、西瓜
),您可以使用在集合中查找
:
SELECT ... WHERE FIND_IN_SET('mango', words)
对于空格,必须使用正则表达式,例如:
SELECT ... WHERE words RLIKE '(^|, )mango($|,)'
更好的是,考虑“规范化”你的数据-单独的<代码>单词< /代码>表:
id word
1 mango
2 orange
etc
和一个链接表:
doc_id word_id
1 1
1 2
etc
对你要找的东西要具体一点。你想知道有多少行有“芒果”这个词,还是想知道每行有多少次出现“芒果”呢?第一:对不起,我的问题不太清楚,谢谢你已经提醒了我。就像你说的,我只想知道每行有多少次“芒果”.谢谢你的“规范化”数据,但这就像一个“标签”,这是一个输入文本中的任何一个,我不知道如何规范化,因为这个过程只需一次插入。@RiskiFebriansyah:如果这些是标签,你肯定应该规范化它们。请考虑重命名标记、删除标记等。这对于您当前的系统来说非常麻烦。非常感谢@georg的建议,我会尝试更改它。