Note that there are some explanatory texts on larger screens.

plurals
  1. POMySQL Levenshtein
    primarykey
    data
    text
    <p>I'm trying to create a MySQL function for calculating the levenshtein distance. I found a function which looked pretty close to what I need, however it keeps throwing errors everywhere - I am new to MySQL functions so I have no idea what is wrong?</p> <p>Here is the function:</p> <pre><code>DELIMITER $$ CREATE FUNCTION LEVENSHTEIN( s1 CHAR(255), s2 CHAR(255)) RETURNS int(3) DETERMINISTIC BEGIN DECLARE s1_len, s2_len, i, j, c, c_temp, cost INT; DECLARE s1_char CHAR(255); DECLARE cv0, cv1 CHAR(255); SET s1_len = LENGTH(s1); SET s2_len = LENGTH(s2); SET cv1 = 0x00; SET j = 1; SET i = 1; SET c = 0; IF s1 = s2 THEN RETURN 0; ELSE IF s1_len = 0 THEN RETURN s2_len; ELSE IF s2_len = 0 THEN RETURN s1_len; ELSE WHILE j &lt;= 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; SET c_temp = CONV(HEX(SUBSTRING(cv1, j+1, 1)), 16, 10) + 1; IF c &gt; 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$$ DELIMITER ; </code></pre> <p>And here is the error (so far).</p> <pre><code>#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 'WHILE; END IF; RETURN c; END' at line 36 </code></pre> <p><strong>EDIT:</strong> Original code can be found <a href="http://www.artfulsoftware.com/infotree/queries.php#552" rel="nofollow">here</a></p>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload