我正在尝试计算一个包含不同句子的VARCHAR列的表,其中有多少行至少有一个匹配的关键字。
例如,如果我想搜索“房子”,“猫”和“狗”,我在表格中有一些句子,如“房屋装饰”,“猫薄荷”,“狗食”和“房屋照片” ,当我搜索这些关键字时,我想得到结果3。
我试过
SELECT
COUNT(*)
FROM insr
WHERE `Nome` LIKE 'house'
OR `Nome` LIKE 'cat'
OR `Nome` LIKE 'dog';
但是计数总是返回0 ..
我已经搜索了很多这样的东西,但我还没找到任何东西
答案 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 %';