Mysql:计算有多少行有一个或多个特定关键字

时间:2014-08-13 11:26:35

标签: php mysql sql

我正在尝试计算一个包含不同句子的VARCHAR列的表,其中有多少行至少有一个匹配的关键字。

例如,如果我想搜索“房子”,“猫”和“狗”,我在表格中有一些句子,如“房屋装饰”,“猫薄荷”,“狗食”和“房屋照片” ,当我搜索这些关键字时,我想得到结果3。

我试过

SELECT 
    COUNT(*) 
FROM insr 
WHERE `Nome` LIKE 'house' 
OR `Nome` LIKE 'cat' 
OR `Nome` LIKE 'dog';

但是计数总是返回0 ..

我已经搜索了很多这样的东西,但我还没找到任何东西

4 个答案:

答案 0 :(得分:4)

您需要like的通配符:

SELECT COUNT(*)
FROM insr
WHERE `Nome` LIKE '%house%' OR `Nome` LIKE '%cat%' OR `Nome` LIKE '%dog%';

如果没有通配符,LIKE的行为与=非常相似。

答案 1 :(得分:1)

您可以使用正则表达式

SELECT COUNT(*) FROM insr WHERE `Nome` REGEXP 'house|cat|dog';

REGEXP添加了通配符,您不必为此担心。

答案 2 :(得分:0)

这是因为你正在寻找确切的词。您必须使用通配符来查找包含您的单词的字段,如下所示:

SELECT count(*) FROM insr WHERE Nome LIKE '%house%' OR Nome LIKE '%cat%' OR Nome LIKE '%dog%';

答案 3 :(得分:-1)

您必须在模式中添加空格

SELECT COUNT(*)
FROM insr
WHERE `Nome` LIKE '% house %' OR `Nome` LIKE '% cat %' OR `Nome` LIKE '% dog %';