MySQL实现LEVENSHTEIN与LEVENSHTEIN_RATIO
LEVENSHTEIN(s1, s2) 函数返回将一个字符串转换为另一字符串所需的添加、替换和删除操作的数量。 LEVENSHTEIN_RATIO(s1, s2) 函数以百分比形式返回两个字符串的相似度 (0 <= x <= 100)。
详见github Jason Rust 支持utf8
LEVENSHTEIN
(255可以扩大,但是会降低运行速度)
VARCHAR(255) => VARCHAR(512)
DELIMITER ;;;
CREATE DEFINER=`root`@`` FUNCTION `LEVENSHTEIN`(s1 VARCHAR(255), s2 VARCHAR(255)) RETURNS int(11) DETERMINISTIC
BEGIN
DECLARE s1_len, s2_len, i, j, c, c_temp, cost INT;
DECLARE s1_char CHAR;
DECLARE cv0, cv1 VARBINARY(256);
SET s1_len = CHAR_LENGTH(s1), s2_len = CHAR_LENGTH(s2), cv1 = 0x00, j = 1, i = 1, c = 0;
IF s1 = s2 THEN
RETURN 0;
ELSEIF s1_len = 0 THEN
RETURN s2_len;
ELSEIF s2_len = 0 THEN
RETURN s1_len;
ELSE
WHILE j <= s2_len DO
SET cv1 = CONCAT(cv1, UNHEX(HEX(j))), j = j + 1;
END WHILE;
WHILE i <= s1_len DO