mySQL запрос: найдите, что содержит ключевое слово и количество объектов, имеющих ключевое слово - PullRequest
0 голосов
/ 09 марта 2020

Мне нужно найти все объекты, которые содержат заданное ключевое слово c вместе с найденной суммой. Я уже начал с этого, но не знаю, как найти сумму. Мне нужно правильно использовать COUNT, но я не могу заставить его работать.

select object
from object o
where o.CTN like '%keyword%';

Другое дело, чтобы получить только тот CTN, который используется более чем 3.

1 Ответ

1 голос
/ 09 марта 2020

Вы можете попробовать следующее:

SELECT object, FLOOR(((CHAR_LENGTH(object) - CHAR_LENGTH(REPLACE(object, 'keyword', ''))) / CHAR_LENGTH('keyword'))) AS cnt_matches
FROM object o
WHERE o.object LIKE '%keyword%'
HAVING cnt_matches > 3

Вы также можете создать функцию для повторного использования этого выражения:

DELIMITER //

CREATE FUNCTION GetStringCount(strValue VARCHAR(200), charValue VARCHAR(200))
RETURNS INTEGER DETERMINISTIC NO SQL
BEGIN
  RETURN (CHAR_LENGTH(strValue) - CHAR_LENGTH(REPLACE(strValue, charValue, ''))) / CHAR_LENGTH(charValue);
END

Таким образом, ваш запрос выглядит так:

SELECT object, GetStringCount(object, 'keyword') AS cnt_matches
FROM object o
WHERE o.object LIKE '%keyword%'
HAVING cnt_matches > 3

демо на dbfiddle.uk

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...