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:
...non so se ho ancora dei problemi di delimitatori...non riesco a capire.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

Rispondi quotando