0
mysql에서 최적화 된 levenshtein 함수를 만들려고합니다.MySQL 최적화 Levenshtein
"#1064 - You have an error in your SQL syntax; check the manual that corresponds
to your MySQL server version for the right syntax to use near
'@differences, @lenRight, @lenLeft, @leftIndex, @rightIndex, @compareLength INT;'
at line 5"
코드 : : 내 오류를 찾을 수없는, 내 콘솔은 저에게이를 반환
이/****** Script Date: 06/10/2009 09:36:44 ******/
DELIMITER $$
CREATE DEFINER=`root`@`%` FUNCTION `optmizedlevenshtein`(s1 VARCHAR(255), s2 VARCHAR(255)) RETURNS int(11)
DETERMINISTIC
BEGIN
DECLARE @differences, @lenRight, @lenLeft, @leftIndex, @rightIndex, @compareLength INT;
DECLARE @left_char, @right_char CHAR(1);
SET @lenLeft = LEN(s1);
SET @lenRight = LEN(s2);
SET @differences = 0;
If @lenLeft = 0
BEGIN
SET @differences = @lenRight GOTO done;
END
If @lenRight = 0
BEGIN
SET @differences = @lenLeft;
GOTO done;
END
GOTO comparison;
comparison:
IF (@lenLeft >= @lenRight)
SET @compareLength = @lenLeft;
Else
SET @compareLength = @lenRight;
SET @rightIndex = 1;
SET @leftIndex = 1;
WHILE @leftIndex <= @compareLength
BEGIN
SET @left_char = substring(s1, @leftIndex, 1);
SET @right_char = substring(s2, @rightIndex, 1);
IF @left_char <> @right_char
BEGIN -- Would an insertion make them re-align?
IF(@left_char = substring(s2, @rightIndex+1, 1))
SET @rightIndex = @rightIndex + 1;
-- Would an deletion make them re-align?
ELSE
IF(substring(s1, @leftIndex+1, 1) = @right_char)
SET @leftIndex = @leftIndex + 1;
SET @differences = @differences + 1;
END
SET @leftIndex = @leftIndex + 1;
SET @rightIndex = @rightIndex + 1;
END
GOTO done;
done:
RETURN @differences;
END$$
DELIMITER ;
사실 SQL Server 스크립트를 번역 해 주셔서 감사합니다. 그것을 고칠 수있는 방법을 보여줄 수 있습니까? 나는 당신이 나를 보내는이 기능을 사용하고 있었지만 너무 느리다. –