Я пытаюсь подсчитать в таблице, в которой есть столбец VARCHAR с разными предложениями, сколько строк имеет хотя бы одно совпадающее ключевое слово.

Например, если я хочу выполнить поиск по запросу «дом», «кошка» и «собака», и у меня в таблице есть такие предложения, как «украшения для дома», «кошачья мята», «корм для собак» и «фотографии дома», когда я поиск по этим ключевым словам, которые я хочу получить в результате 3.

Я пытался с

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

Но счет всегда возвращает 0 ..

Я много искал что-то подобное, но до сих пор ничего не нашел

0
Stefa168 13 Авг 2014 в 15:26

4 ответа

Лучший ответ

Вам нужны подстановочные знаки для like:

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

Без подстановочных знаков LIKE во многом похож на =.

4
Gordon Linoff 13 Авг 2014 в 11:28

Вы можете использовать регулярное выражение

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

REGEXP добавляет подстановочные знаки, о которых вам не о чем беспокоиться.

1
Muhammad Raheel 13 Авг 2014 в 11:31

Это потому, что вы ищете точное слово. Вы должны использовать подстановочный знак, чтобы найти поле, содержащее ваше слово, например:

SELECT count(*) FROM insr WHERE Nome LIKE '%house%' OR Nome LIKE '%cat%' OR Nome LIKE '%dog%';
0
Valentin Clement 13 Авг 2014 в 11:29

Вы должны добавить пробел в свои узоры

SELECT COUNT(*)
FROM insr
WHERE `Nome` LIKE '% house %' OR `Nome` LIKE '% cat %' OR `Nome` LIKE '% dog %';
-1
Kousick Shanmugam Nagaraj 13 Авг 2014 в 11:30