Si, hai ragione. Quando la creo in locale (sostituendo però il delimiter con \), funziona. Invece in remoto mi da dei problemi...
#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 '(
s1 VARCHAR( 255 ) ,
s2 VARCHAR( 255 )
) RETURNS int( 11 ) D
con questo codice:
codice:
CREATE FUNCTION `levenshtein` (
s1 VARCHAR( 255 ) ,
s2 VARCHAR( 255 )
) RETURNS int( 11 ) DETERMINISTIC BEGIN DECLARE s1_len INT;
DECLARE s2_len INT;
DECLARE i INT;
DECLARE j INT;
DECLARE c INT;
DECLARE c_temp INT;
DECLARE 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 SET s1_char = SUBSTRING( s1, i, 1 ) ,
c = i,
cv0 = UNHEX( HEX( i ) ) ,
j =1;
WHILE j <= s2_len DO SET c = c +1;
IF s1_char = SUBSTRING( s2, j, 1 ) THEN SET cost =0;
ELSE SET cost =1;
END IF ;
SET c_temp = CONV( HEX( SUBSTRING( cv1, j, 1 ) ) , 16, 10 ) + cost;
IF c > c_temp THEN SET c = c_temp;
END IF ;
SET ce_temp = CONV( HEX( SUBSTRING( cv1, j +1, 1 ) ) , 16, 10 ) +1;
IF c > c_temp THEN SET c = c_temp;
END IF ;
SET cv0 = CONCAT( cv0, UNHEX( HEX( c ) ) ) ,
j = j +1;
END WHILE;
SET cv1 = cv0,
i = i +1;
END WHILE;
END IF ;
RETURN c;
END
...non so se ho ancora dei problemi di delimitatori...non riesco a capire.