Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在mysql-pdo中计算句子中的单词_Php_Mysql_Sql_Select_Pdo - Fatal编程技术网

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的建议,我会尝试更改它。