小编典典

MySQL计数匹配词

sql

如何查询以获取字段中匹配单词的数量,特别是在MySQL中。我只需要获取“搜索字词”出现在字段值中的次数即可。

例如,值是“一二一二”,所以当我搜索单词“一”时,它应该给我3

是否有可能?因为当前我只是从数据库中提取值,并使用服务器端语言进行计数。

谢谢


阅读 190

收藏
2021-04-28

共1个答案

小编典典

您可以创建一个可直接在SQL中使用的函数,以便一步一步完成所有操作。

这是我在MySQL网站上找到的函数

delimiter ||
DROP FUNCTION IF EXISTS substrCount||
CREATE FUNCTION substrCount(s VARCHAR(255), ss VARCHAR(255)) RETURNS TINYINT(3) UNSIGNED LANGUAGE SQL NOT DETERMINISTIC READS SQL DATA
BEGIN
DECLARE count TINYINT(3) UNSIGNED;
DECLARE offset TINYINT(3) UNSIGNED;
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET s = NULL;

SET count = 0;
SET offset = 1;

REPEAT
IF NOT ISNULL(s) AND offset > 0 THEN
SET offset = LOCATE(ss, s, offset);
IF offset > 0 THEN
SET count = count + 1;
SET offset = offset + 1;
END IF;
END IF;
UNTIL ISNULL(s) OR offset = 0 END REPEAT;

RETURN count;
END;

||

delimiter ;

您应该像这样使用它:

SELECT substrCount('one two one onetwo', 'one') `count`; // Returns 3
2021-04-28