select * from xx表名 where sfn_GetSimilar_Rate(值1,值2);
目前支持64字符,如果需要更大字符请自行更改,测试过程如果文字过长,可能速度会点慢。如果需要更高效率建议使用搜索引擎或者其他方法
-- --------------------------------------------------------------------------------
-- 计算两个中文字符串的相似度
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE DEFINER = CURRENT_USER FUNCTION `sfn_GetSimilar_Rate`(s1 VARCHAR(64),s2 VARCHAR(64)) RETURNS float
BEGIN
declare l1 int default 0;
declare l2 int default 0;
declare i int default 0;
declare _ss varchar(2) ;
declare j int default 0;
declare sum int default 0;
set l1=CHAR_LENGTH(s1);
set l2=CHAR_LENGTH(S2);
IF l1=0 THEN RETURN 0;
END IF;
IF l2=0 THEN RETURN 0;
END IF;
SET i=0;
set sum=0;
myloop1:LOOP
SET i=i+1;
IF i>l1 THEN LEAVE myloop1;
end if;
SET _ss=substr(s1,i,1);
SET j=0;
myloop2:LOOP
set j=j+1;
if j>l2 then
LEAVE myloop2;
end if;
if _ss=substr(s2,j,1) then
set sum=sum+1;
end if;
END LOOP myloop2;
END LOOP myloop1;
RETURN sum/l2;
END
计算字符串相似度的MySQL函数
这个博客介绍了如何在MySQL中创建一个名为`sfn_GetSimilar_Rate`的自定义函数,用于计算两个中文字符串的相似度。函数接受两个VARCHAR(64)类型的参数,返回它们之间的相似度比率。在测试过程中,若字符串长度超过64字符,可能会导致计算速度变慢,建议使用更高效的方法如搜索引擎。
2028

被折叠的 条评论
为什么被折叠?



